let array1 = 1 2 3 4;function arrourarr iftypeof arr !== object arr === null return arr let arrobj = Objectcreatearr forlet key in arr ifarrhasOwnPropertykey arrobjkey = arrkey
代码中的问题在于,使用Object.create(arr)创建了一个新的对象arrobj,但是并没有将arr的元素复制到arrobj中。因此,array2仍然是一个空数组。
要解决这个问题,可以使用Array.from(arr)或者[...arr]来复制arr的元素到一个新的数组中。修改代码如下:
let array1 = [1, 2, 3, 4];
function arrour(arr){
if(typeof arr !== 'object' || arr === null){
return arr
}
let arrobj = Array.from(arr) || []
for(let key in arr){
if(arr.hasOwnProperty(key)){
arrobj[key] = arr[key]
}
}
return arrobj
}
let array2 = arrour(array1)
console.log(array2)
array1.push('woaini')
console.log(array1)
console.log(array2)
这样,array2就会包含array1的所有元素,并且不会受到array1的修改的影响
原文地址: https://www.cveoy.top/t/topic/iNL7 著作权归作者所有。请勿转载和采集!