Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用嵌套数组的Javascript reduce_Javascript_Nested_Reduce - Fatal编程技术网

使用嵌套数组的Javascript reduce

使用嵌套数组的Javascript reduce,javascript,nested,reduce,Javascript,Nested,Reduce,我正在尝试使用该方法对嵌套数组求和。我的dat数组如下所示: var data = [ [1389740400000, 576], [1389741300000, 608], [1389742200000, 624], [1389743100000, 672], [1389744000000, 691] ]; 我明白了: // es5 data.reduce(function(prev, next) { return prev + next[1]; })

我正在尝试使用该方法对嵌套数组求和。我的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])
但是,我只需要每个(嵌套)数组中的第二个值。有什么提示或提示吗?我正在尝试对数组中的所有值求和

//编辑:谢谢你的回答。问题是,我在最后错过了初始值

// 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(上一步,下一步)
以更好地理解


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

如果
数据是一个整数数组,那么你所写的就可以了。在您的例子中,
data
是一个数组数组。因此,return语句应该对数组的元素进行操作:

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

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

使用:
array.reduce(总和,0)

函数和(r,a){
返回数组.isArray(a)?a.reduce(和,r):r+a;
}
console.log([
[1389740400000, 576],
[1389741300000, 608],
[1389742200000, 624],
[1389743100000, 672],
[1389744000000, 691]
].减少(总和,0);
console.log([
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12, [13, 14, 15, 16]]

].减少(总和,0)我用一种简单的方法求和所有值。谢谢。我尝试了不同的方法,但错过了最后一个要素。也许我应该更仔细地阅读这些文件