有没有办法找到这个数组的长度,以及它内部的所有子数组。含义13而不是6?无需使用循环并将数组中的所有元素相加。
我正在寻找一个可以做到这一点的命令。
[1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]]
答案 0 :(得分:2)
尝试平放它
[].concat.apply([], [1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]]).length
答案 1 :(得分:1)
有点黑客,但你可以做到
arr.toString().split(',').length
join(',')
也会起作用,它会使一切变得平坦
var arr = [1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]];
console.log(arr.toString().split(',').length)

如果你想要的只是总数中的指数
如果数组在索引中包含逗号,则可以删除这些逗号以获得相同的效果
JSON.stringify(arr).replace(/"(.*?)"/g,'1').split(',').length
答案 2 :(得分:1)
Array#reduce
,但 [风险自负]
使用Array.isArray
确定传递的值是否为Array
。
var input = [1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]];
var length = input.reduce(function(a, b) {
return a + (Array.isArray(b) ? b.length : 1);
}, 0);
console.log(length);