是否有一种方法可以找到这个数组的长度,以及它里面的所有子数组。意思是13而不是6?无需使用循环,也无需将数组中的所有元素加起来。
我正在寻找一个可以做到这一点的命令。
[1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]]
试着把它放平
[].concat.apply([], [1, [4, 5, 2, 1], 2, [4, 5, 2, 6], 2, [3, 3]]).length
有点小技巧,但是你可以
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
-
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);