我有一个Java对象数组,它使用一些值初始化。
我想将这些值复制到一个新的对象数组,但不参考原始对象。
然后,我想根据需要操纵新对象。
我像下面的示例代码一样尝试了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/