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。为什么呢?有什么具体的原因吗?对,这叫做分解问题。