我有一个 JavaScript 对象数组,它是用一些值初始化的。 我想将这些值复制到一个新的对象数组,但不引用原始对象,这样我就可以操作新对象。
我尝试了 objectOptions.concat()
就像在这个示例代码中一样,但它随后也删除了引用的原始对象:
var objectOptions = [{option1: 'value1', someOption: 'value2'}];
function objectClean(){
var newObjectOptions = objectOptions.concat();
for(var i in newObjectOptions ) {
delete newObjectOptions[i]['someOption'];
}
return newObjectOptions ;
};
最佳答案
如果你的对象足够简单并且JSON-compatible (即仅包含对象、数组和基元,没有 DOM 引用、没有 Regex 对象、没有循环引用等),最简单的克隆方法是:
var clone = JSON.parse(JSON.stringify(original));
否则,您将需要一个深层复制函数,如 this answer 中的函数。 *:
function clone(obj){
if(obj == null || typeof(obj) != 'object')
return obj;
var temp = obj.constructor(); // changed
for(var key in obj)
temp[key] = clone(obj[key]);
return temp;
}
* 小心!该问题的公认答案是仅 jQuery 的解决方案,并且被严重高估了!
关于javascript - 将对象属性复制到新对象 - 不通过引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14539746/