用一个索引作为键对多个数组进行求和。

问题描述 投票:0回答:1

我正在从多个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部分。

javascript plotly reduce
1个回答
2
投票

我希望这能帮助你

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);
© www.soinside.com 2019 - 2024. All rights reserved.