代码中的问题在于,使用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的修改的影响

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

原文地址: https://www.cveoy.top/t/topic/iNL7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录