📅  最后修改于: 2023-12-03 15:26:12.150000             🧑  作者: Mango
在 JavaScript 中,获取数组的长度是一个基本操作,可以使用 length
属性实现。但是,如果数组中嵌套了多个数组,则无法通过简单的 length
属性获取正确的数组长度。这时就需要使用递归来获取每个数组的长度,然后汇总得到最终的数组长度。
以下是一个实现递归获取数组长度的 JavaScript 函数:
function getLength(arr) {
if (!Array.isArray(arr)) { // 判断当前数据是否为数组
return 0;
}
let len = arr.length;
for (let subArr of arr) { // 循环遍历数组的每一个子数组
len += getLength(subArr); // 递归获取子数组的长度并累加到总长度中
}
return len;
}
以上代码中,getLength
函数接收一个数组作为参数。如果参数不是数组,则直接返回 0
。如果参数是数组,则先获取该数组的长度并赋值给变量 len
。然后使用 for...of
循环遍历数组中的每一个子数组,并调用 getLength
函数递归获取子数组的长度。最后将子数组的长度累加到 len
变量中,并返回最终的数组长度。
下面是一些示例:
getLength([1, 2, 3]); // 3
getLength([1, [2, 3], 4]); // 4
getLength([1, [2, [3, 4]], 5]); // 5
getLength([1, [2, [3, [4, 5]]]]); // 5
以上示例分别演示了,如何获取一个简单数组的长度,以及如何获取一个嵌套多层的数组的长度。在最后一个示例中,数组 [4, 5]
经过一系列嵌套后,成为了 [3, [4, 5]]
。此时,调用 getLength([2, [3, [4, 5]]])
就可以获取其中所有子数组的长度,并累加得到 5
。