📜  数组的 JS 递归 getLength - Javascript (1)

📅  最后修改于: 2023-12-03 15:26:12.150000             🧑  作者: Mango

数组的 JS 递归 getLength - Javascript

在 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