插件窝 干货文章 如何用JavaScript递归遍历并修改多层嵌套数组?

如何用JavaScript递归遍历并修改多层嵌套数组?

数组 递归 遍历 一个 602    来源:    2025-03-23

在JavaScript中,递归是一种非常强大的技术,可以用来遍历和修改多层嵌套的数组。以下是一个示例,展示了如何使用递归来遍历并修改一个多层嵌套的数组。

假设我们有一个多层嵌套的数组,我们想要遍历这个数组,并将所有的数字元素乘以2。

function modifyNestedArray(arr) {
    // 遍历数组中的每一个元素
    for (let i = 0; i < arr.length; i++) {
        // 如果当前元素是一个数组,递归调用modifyNestedArray
        if (Array.isArray(arr[i])) {
            modifyNestedArray(arr[i]);
        } else if (typeof arr[i] === 'number') {
            // 如果当前元素是一个数字,将其乘以2
            arr[i] = arr[i] * 2;
        }
    }
}

// 示例数组
let nestedArray = [1, [2, [3, 4], 5], 6];

// 调用函数修改数组
modifyNestedArray(nestedArray);

console.log(nestedArray); // 输出: [2, [4, [6, 8], 10], 12]

代码解释:

  1. modifyNestedArray 函数:这是一个递归函数,它接受一个数组 arr 作为参数。
  2. 遍历数组:使用 for 循环遍历数组中的每一个元素。
  3. 递归调用:如果当前元素是一个数组(使用 Array.isArray 检查),则递归调用 modifyNestedArray 函数来处理这个子数组。
  4. 修改数字元素:如果当前元素是一个数字(使用 typeof 检查),则将其乘以2。
  5. 示例数组nestedArray 是一个多层嵌套的数组,包含数字和子数组。
  6. 调用函数:调用 modifyNestedArray 函数来修改 nestedArray
  7. 输出结果:最终,nestedArray 中的所有数字元素都被乘以2。

注意事项:

  • 递归深度:如果数组嵌套层级非常深,可能会导致栈溢出错误。在这种情况下,可以考虑使用迭代方法来替代递归。
  • 数据类型:确保你只对数字类型的数据进行修改,避免对其他类型的数据(如字符串、对象等)进行不必要的操作。

通过这种方式,你可以轻松地遍历和修改多层嵌套的数组。