Iri*_*min 9 javascript arrays sum matrix
如何垂直汇总数组数组中的所有数据?
arrayOfArrays = [{
label: 'First Value',
data: [1, 2, 3, 4, 5, 6, 7, 8]
},
{
label: 'Second Value',
data: [1, 2, 3, 4, 5, 6, 7, 8]
},
{
label: 'Third Value',
data: [1, 2, 3, 4, 5, 6, 7, 8]
}
];
var result = arrayOfArrays.reduce(function(array1, array2) {
return array1.data.map(function(value, index) {
return value + array2.data[index];
}, 0);
});
console.log(result)
Run Code Online (Sandbox Code Playgroud)
输出应为数组的垂直和。[3,6,9,12,15,18,21,24]
问题是array1总是返回未定义的值。
您的代码几乎是正确的,但有 1 个问题。
您正在累加器上循环。这将是第二次迭代中的数字数组。相反,循环array2
或当前项目。
的想法.reduce
是所有迭代都具有相同的签名。如果您不传递累加器的默认值,则第一次迭代将是类型Array<{ label: string, data: Array<number>}>
,第二次迭代将是Array<number>
。因此,您可以通过将默认值传递为 来跳过第一次迭代的行为[]
。现在计算将会array[n]
中断undefined
。为此,您可以使用默认值0
。
所以你的计算将如下所示:
value + (array1[index] || 0)
Run Code Online (Sandbox Code Playgroud)
以下是一个示例:
value + (array1[index] || 0)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
134 次 |
最近记录: |