result.push(deepClone(arr[i]));再次疑问?
# 具体遇到的问题
result.push(deepClone(arr[i]));这里为啥还要将元素数组再次推入resul中?和直接写push(deepClone(arr[i]))有啥差别,我的理解是当arr[4]的时候,会将[77,88]再传入到deepClone方法中,那deepClone方法的else不是已经有 result.push(arr[i]);了么
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
var arr1 = [33, 44, 11, 22, [77, 88,]];
function deepClone(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (Array.isArray(arr1[i])){
result.push(deepClone(arr[i]));
}else {
result.push(arr[i]);
}
}
return result;
}
var arr2=deepClone(arr1);
console.log(arr2);
在这里输入代码,可通过选择【代码语言】突出显示
正在回答 回答被采纳积分+1
另外一种思路,仅供参考,添加一个额外参数(数组)来保存遍历原数组得到的值
<script>
function clone(src, dst) {
for (var i = 0; i < src.length; i++) {
if (Array.isArray(src[i])) {
dst[i] = []
clone(src[i], dst[i])
} else {
dst.push(src[i])
}
}
}
// src
var arr = [
0,
[1, 2],
[3, 4],
9,
100
]
// dst
var ret = []
// 深克隆
clone(arr, ret)
console.log(ret)
</script>
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星