我正在从多个csv文件中导入数据,最后一个文件需要进行一些映射和还原。
Promise.all([
d3.csv("x.csv"),
d3.csv("y.csv"),
d3.csv("z.csv")
]).then(function(data) {
var alpha = data.map(row=>[row.key, row.item1, row.item2]);
var beta = data.filter(row=> (row.key=='x'))
.map(row=> [row.key, row.item1, row.item2]);
var gamma = data.filter(row=> (row.key=='x') ||
(row.key=='y'))
.map(row=>[row.key, row.item1, row.item2]);
});
现在我必须首先将所有的数字字符串转换为整数以及进行还原。
在JavaScript中我有多个数组
[[x, 5, 4],
[x, 5, 6],
[y, 3, 9],
[y, 4, 6]]
我想以index[0]为键,使用reduce函数对其进行还原。
所以结果是这样的。
[[x,10,10],
[y,7,15]]
我很困惑,如何在求和过程中选择一个特定的索引作为键。
.map(row=>[row.key, row.item1, row.item2]) //produces the array mentioned above
.reduce(row=>[row.item1, row.item2]); /对每一行进行求和?
我想我的错误是在reduce部分。
我希望这能帮助你
var arr = [['a', 5, 4],
['a', 5, 6],
['b', 3, 9],
['b', 4, 6]];
const newArr = arr.reduce((acc, cur) => {
const prev = acc.find(elem => elem[0] === cur[0]);
if(prev) {
prev[1] += cur[1];
prev[2] += cur[2];
}
else {
acc.push(cur);
}
return acc;
}
, []);
console.log(newArr);