在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 包含對象的復雜數(shù)組深拷貝

包含對象的復雜數(shù)組深拷貝

let arr = [
    {name: 'Bob', age: 12},
    {name: 'Lucy', age: 10},
    {name: 'Alix', age: 11}
]

let arr1 = [...arr]
arr1[0].age = 99

console.log(arr[0].age) // 99

顯而易見:es6 的這種拷貝數(shù)組方法不合適,因為 arr 里的都是對象,那現(xiàn)在問題就是如何深拷貝 arr 這個數(shù)組?

回答
編輯回答
心上人

Emmmm,最簡單的辦法嘛...

arrCopy = JSON.parse(JSON.stringify(arr))

復雜一點的話,自己寫一個遞歸咯。

2017年12月29日 06:56
編輯回答
帥到炸

為什么不用lodash的深度克隆技術?一行代碼搞定,優(yōu)雅直觀:

let arr1 = _.cloneDeep(arr);
2017年12月11日 11:45
編輯回答
久舊酒

這種應當算解構賦值吧,簡單點理解就是arr1[0] = arr[0],arr1[1]=arr[1]...所以應當是個引用賦值,淺的不行。用JSON拷貝的話,對象的方法復制不出去。可以試一下map結合assign,或者遞歸復制

2017年12月31日 12:14
編輯回答
尛憇藌

遞歸調用淺拷貝吧。

  function deepCopy(p, c) {
    var c = c || {};
    for (var i in p) {
      if (typeof p[i] === 'object') {
        c[i] = (p[i].constructor === Array) ? [] : {};
        deepCopy(p[i], c[i]);
      } else {
         c[i] = p[i];
      }
    }
    return c;
  }
2018年4月23日 04:21