垂直对数组(矩阵)求和

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总是返回未定义的值。

Raj*_*esh 2

您的代码几乎是正确的,但有 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)