Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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 减少多维数字数组_Javascript - Fatal编程技术网

Javascript 减少多维数字数组

Javascript 减少多维数字数组,javascript,Javascript,如何通过函数查找以下多维数组中所有数字的总和: var arr = [["one",3],["five",15],["ten",30],["twenty",40]]; 我知道如何使用for循环来实现这一点,但我只是想知道……您可以这样做 var sum = [["one",3],["five",15],["ten",30],["twenty",40]].reduce(function(a,b){ return a + b[1]; }, 0); 在上面的代码中,作为第二个参数传递的0是计算

如何通过函数查找以下多维数组中所有数字的总和:

var arr = [["one",3],["five",15],["ten",30],["twenty",40]];

我知道如何使用for循环来实现这一点,但我只是想知道……

您可以这样做

var sum = [["one",3],["five",15],["ten",30],["twenty",40]].reduce(function(a,b){
  return a + b[1];
}, 0);

在上面的代码中,作为第二个参数传递的0是计算中要使用的初始值。

将其分解为子问题

首先,编写
getNumbers
,从输入中获取一个数字数组。 它使用
getNumber
,获取每个小数组中的第二个元素。
sum
使用
reduce
将数组中的数字相加, 它使用
add
功能添加两个数字

函数和(arr){返回arr.reduce(add,0);}
函数add(a,b){返回a+b;}
函数getNumber(pair){返回对[1];}
函数getNumbers(arr){返回arr.map(getNumbers);}
var arr=[“一”、“三”、“五”、“十五”、“十”、“三十”、“二十”、“四十]];

日志(sum(getNumbers(arr))thanx。。。我忘记了0,这就是在我的例子中它返回NaN的原因。MDN不能帮助我理解。reduce如何处理2d数组,但这个示例确实。。。b[1],(是3,接下来是15,然后是30,然后是40)作为值添加到累加器并返回。您的代码似乎需要两个不同的迭代来实现OP想要的结果。1) 对于地图2)对于reduce。为什么呢?有什么具体的原因吗?对,这叫做分解问题。