【发布时间】:2020-07-21 17:18:53
【问题描述】:
我有一个数据文件,我必须使用 reduce() 方法将其转换为另一种格式,我已经编写了代码,但它没有添加所有项目...
数据文件: data.txt
Joey Pizza 2
Joey Sandwich 1
Joey Burger 2
Chandler Pizza 1
Chandler Sandwich 0
Chandler Burger 1
预期结果
{
"Joey": [
{
"Ordername": "Pizza",
"Quantity": "2"
},
{
"Ordername": "Sandwich",
"Quantity": "1"
},
{
"Ordername": "Burger",
"Quantity": "2"
}
],
"Chandler": [
{
"Ordername": "Pizza",
"Quantity": "1"
},
{
"Ordername": "Sandwich",
"Quantity": "0"
},
{
"Ordername": "Burger",
"Quantity": "1"
}
]
}
我写的代码:
code.js
const fs = require('fs');
var output = fs
.readFileSync('data.txt', 'utf8')
.trim()
.split('\n')
.map((line) => line.split(' '))
.reduce((acc, item) => {
acc[item[0]] = [];
acc[item[0]].push({ Ordername: item[1], Quantity: item[2] });
return acc;
}, {});
console.log(JSON.stringify(output, null, 2));
在运行上面的代码时,它会给出这个结果:
{
"Joey": [
{
"Ordername": "Burger",
"Quantity": "2\r"
}
],
"Chandler": [
{
"Ordername": "Burger",
"Quantity": "1"
}
]
}
为什么只将第三项添加到数组中而不是全部三个项?
【问题讨论】:
-
这个
acc[item[0]] = [];应该是acc[item[0]] = acc[itiem[0]] || [];
标签: javascript node.js functional-programming