JSオブジェクトを深くコピーするいくつかの方法をまとめます.
6195 ワード
例:
4.lodash.jsツール関数ライブラリを使用するclone Deep関数
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);