我有一个结果集,它是一个对象数组。我需要克隆它,这样我就可以在不触及原始数据的情况下对其进行更改。
var data = w2ui.grid.records,
exclude = Array('recid', 'w2ui'); // Exclude these data points from the pivot
// Modify our tempData records to remove HTML
$.each(data, function(key, value) {
$.each(value, function(_key, _value) {
if(jQuery.inArray(_key, exclude) != -1) {
delete data[key][_key];
}else{
data[key][_key] = $('<div>'+_value+'</div>').text(); // <div></div> for those which are simply strings.
}
});
});
在此示例中,我创建了一个名为 data
的变量并将其设置为我的“源数据”。
我希望能够对此新数据变量进行更改,但似乎在对其进行更改时,源数据正在更改( w2ui.grid.records
)。
有没有一种正确的方法来克隆这个集合,这样我就可以有一个新的数据实例来修改?
原文由 SBB 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑
深度克隆使用
JSON.parse(JSON.stringify(arr));
浅克隆使用
slice(0);