需求,拷贝的数组中嵌套对象,且嵌套的对象中又包含数组,以此类推类似于树的结构,js自带的拷贝无法满足需求,复杂的对象深拷贝代码如下
function deepCopy
(obj
) {
var result
= Array.isArray
(obj
) ?
[] : {};// 判断传入拷贝对象是否数组,是创建新数组
[],否则创建新对象
{}
for (var key
in obj
) { //这里使用for in,因为for in循环可以遍历数组和对象
if (obj.hasOwnProperty
(key
)) { // 判断对象是否包含特定的自身(非继承)属性。
if (typeof obj
[key
] === 'object' && obj
[key
]!==null
) { // typeof 对象
| 数组
| null ,返回
'object'
result
[key
] = deepCopy
(obj
[key
]); //递归复制
} else {
result
[key
] = obj
[key
];
}
}
}
return result
;
}
转载请注明原文地址: https://lol.8miu.com/read-16366.html