繁体   English   中英

Javascript 使用嵌套数组减少

[英]Javascript reduce with a nested array

我正在尝试使用reduce方法对嵌套数组求和。 我的 dat 数组如下所示:

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

我懂了:

// 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]];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM