定义函数使用递归,深克隆一个数组

138 阅读1分钟

定义好函数,在函数内部继续使用,叫做递归。

通过遍历,找到原来数组中的每一项,如果 遍历出来的还是一个数组,(Array.isArray()判断),就要继续执行递归函数。

如果遍历出来的,已经是字符串,就把这个遍历出来的值添加到新数组里面去。newArr.push()

最后打印测试一下,函数对不对,调用函数的时候,看看定义函数的时候的参数,不能写错。

<script>
  var arr1 = [11, 22, [33, 44], [55, 66, 77]];

  //   定义一个函数,把arr1作为参数传进去,遍历arr1,把遍历出来的传到arr2里面去
  function deepClone(arr1) {
    var arr2 = [];
    for (var i = 0; i < arr1.length; i++) {
      // 到这一步可以遍历出arr1里面的值
      // 里面有字符串有数组,继续判断
      if (arr1[Array.isArray(arr1[i])]) {
        deepClone(arr1[i]);
      } else {
        arr2.push(arr1[i]);
      }
    }
    // for循环结束,函数里面返回arr3
    return arr2;
  }
// 执行函数测试一下对不对
  console.log(deepClone(arr1));
</script>