JSオブジェクトを深くコピーするいくつかの方法をまとめます.

6195 ワード

例:
var obj = {
     
    name: "  ",
    age: 18,
    skin: [
		{
      id: 0, name: '    ', color: 'yellow' },
		{
      id: 1, name: '  ', color: 'red'  }
	]
}
1.for…in巡回コピー対象
function copy(obj) {
     
    var obj2 = {
     }
    for (var key in obj) {
     
        obj2[key] = typeof obj[key] === "object" ? copy(obj[key]) : obj[key]
    }
    return obj2
}
var obj2 = copy(obj) 
console.log(obj2); // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
console.log(obj === obj2) // false
2.JSON.strigify/JSON.parse
	var obj2 = JSON.parse(JSON.stringify(obj)) // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
	console.log(obj === obj2) // false
3.演算子を展開する
var obj2 = {
     ...obj}
console.log(obj2) // {name: "  ", age: 18, skin: [{ id: 0, name: '    ', color: 'yellow'  },{ id: 1, name: '  ', color: 'red'  }]}
console.log(obj === obj2)  // false
注意:Objが配列である場合、Aray.prototype.co ncat([])を使用して新しい配列をクローンすることができます.
4.lodash.jsツール関数ライブラリを使用するclone Deep関数
var obj2 = _.cloneDeep(obj);