Javascript减少嵌套数组

Javascript reduce with a nested array

本文关键字:数组 嵌套 Javascript      更新时间:2023-09-26

我试图用减少方法求和嵌套数组。我的数据数组看起来像这样:

var data = [
    [1389740400000, 576],
    [1389741300000, 608],
    [1389742200000, 624],
    [1389743100000, 672],
    [1389744000000, 691]
];

I got this:

// es5
data.reduce(function(prev, next) { return prev + next[1]; })
// es6 syntax
data.reduce((prev, next) => prev + next[1])

然而,我只需要每个(嵌套)数组中的第二个值。有什么建议吗?我正在尝试对数组中的所有值求和。

//编辑:谢谢你的回答。问题是,我漏掉了末尾的initialValue

// es6 solution
data.reduce((prev, next) => prev + next[1], 0)

按如下操作

var result = data.reduce(function (prev,next) {
    return prev + next[1];
},0);
console.log(result);//prints 3171

这里我将0初始发送为prev。所以它会像这样

First Time  prev->0 next->[1389740400000, 576]
Second Time prev->576 next->[1389740400000, 608]

做一个console.log(prev,next)来更好地理解。

如果你在文档中看到,你会得到它

适用于所有数组的通用方法,即使它们是不规则样式的。

使用:array.reduce(sum, 0)

function sum(r, a) {
    return Array.isArray(a) ? a.reduce(sum, r) : r + a;
}
console.log([
    [1389740400000, 576],
    [1389741300000, 608],
    [1389742200000, 624],
    [1389743100000, 672],
    [1389744000000, 691]
].reduce(sum, 0));
console.log([
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12, [13, 14, 15, 16]]
].reduce(sum, 0));

如果data是一个整数数组,那么您所写的内容将有效。在您的示例中,data是一个数组的数组。因此,return语句应该对数组的元素进行操作:

return [previousValue[0] + currentValue[0], previousValue[1] + currentValue[1]];