结合数组的长度,为什么返回NaN?JavaScript
信息:您好,您可以看到有4个阵列,然后是一个包含这些阵列的阵列。我正在使用u.reduce来增加数组的长度。当我用数组数组调用函数时,我得到了NaN。我希望得到19分 为什么会这样?谢谢你的帮助结合数组的长度,为什么返回NaN?JavaScript,javascript,arrays,Javascript,Arrays,信息:您好,您可以看到有4个阵列,然后是一个包含这些阵列的阵列。我正在使用u.reduce来增加数组的长度。当我用数组数组调用函数时,我得到了NaN。我希望得到19分 为什么会这样?谢谢你的帮助 var array1 = [[1],[2],[3],[4],[5]]; var array2 = ["a", "b"]; var array3 = [{name : "John"}, {age : 21}]; var array4 = [1,2,3,4,5,6,7,8,9,0]; var array5
var array1 = [[1],[2],[3],[4],[5]];
var array2 = ["a", "b"];
var array3 = [{name : "John"}, {age : 21}];
var array4 = [1,2,3,4,5,6,7,8,9,0];
var array5 = [array4, array3, array2, array1];
var arrayComboLength = function(array){
return _.reduce(array, function(a,b){
return a.length + b.length;
});
}
console.log(arrayComboLength(array5)); --> // NaN
reduce
回调的第一个参数是累加器。您正在访问一个数字的长度
,这将导致未定义
。然后将undefined
添加到剩余数组长度的数字中,这将导致undefined
var arrayComboLength = function(array) {
return _.reduce(array, function(a, b) {
return a + b.length;
}, 0);
}
这与文档中给出的示例非常接近,
reduce
回调的第一个参数是累加器。您正在访问一个数字的长度
,这将导致未定义
。然后将undefined
添加到剩余数组长度的数字中,这将导致undefined
var arrayComboLength = function(array) {
return _.reduce(array, function(a, b) {
return a + b.length;
}, 0);
}
这与文档中给出的示例非常接近,计数函数将递归应用于数组的所有元素。例如,它们将递归地应用于array4中的标量值。标量值没有长度 计数函数将递归应用于数组的所有元素。例如,它们将递归地应用于array4中的标量值。标量值没有长度 嗨,非常感谢,这很有效。在你的解决方案中,如果我不包括0,我得到的结果是-->//1,2,3,4,5,6,7,8,90225我不知道为什么会得到它。如果我们忽略起始值(0),我会有这样的印象。更正:如果我们忽略起始值(0),它将从0开始。这不是真的吗?@AugustusBrennan不,如果不另行指定,它将使用第一个数组元素,并开始在第二个元素上运行。嗨,非常感谢,这很有效。在你的解决方案中,如果我不包括0,我得到的结果是-->//1,2,3,4,5,6,7,8,90225我不知道为什么会得到它。如果我们忽略起始值(0),我会有这样的印象。更正:如果我们忽略起始值(0),它将从0开始。这不是真的吗?@AugustusBrennan不,如果不另行指定,它将使用第一个数组元素,并开始在第二个元素上运行。