1. let arr = [
    2. "A", [1, 2, 3],
    3. true, null,
    4. { age: 18 }
    5. ];
    6. function deepClone(temp, newArr = []) { // 这里可以传入新数组,以及老数组。然后 实参大于形参,所以传入对象的时候会覆盖
    7. //遍历被拷贝的数组
    8. for (let index in temp) {
    9. if (temp[index] instanceof Object && temp[index] != null) { // 判断是否是引用数据类型,除去null
    10. //实现深拷贝
    11. //这里也可以使用if(){}else{}
    12. if(temp[index] instanceof Array ?){
    13. newArr[index] = []
    14. }else{
    15. newArr[index] ={}
    16. }
    17. //主要还是使用三目运算,简单
    18. newArr[index] = temp[index] instanceof Array ? [] : {}; // 使用三目运算
    19. //这里使用递归
    20. deepClone(temp[index], newArr[index]);
    21. } else {
    22. //如果传入的是对象 eg:newArr[name] = temp[name]
    23. //先给新对象创建 键名,然后再将 值赋值过去
    24. newArr[index] = temp[index];
    25. }
    26. }
    27. return newArr;
    28. }
    29. let cloneArr = deepClone(arr);
    30. console.log(arr);
    31. console.log(cloneArr);
    32. //进行验证
    33. // arr[1][1] = "B";
    34. // arr[3].age = 20;
    35. console.log(ar2r);
    36. console.log(cloneArr);