我要求克隆JSON对象但是删除特定元素。我试图使用lodash clone()。测试代码:
var _ = require('lodash');
var obj = {
"config": {
"items": [
{
"k1": "foo",
"k2": "xx",
"k3": "yy"
},
{
"k1": "bar",
"k2": "zz",
"k3": "aa"
}
]
}
};
var clone = _.cloneDeep(obj, function(value) {
// debug
if(value.k2 == "xx"){
console.log(value);
}
return value.k2 == "xx" ? value : undefined;
});
console.log("CLONE: "+JSON.stringify(clone));
我想返回一个克隆对象,但只返回K2 =“xx”的项目。执行上述操作表明正在找到正确的项目,但返回的克隆对象还包括所有其他项目:
{ k1: 'foo', k2: 'xx', k3: 'yy' }
CLONE: {"config":{"items":[{"k1":"foo","k2":"xx","k3":"yy"},{"k1":"bar","k2":"zz","k3":"aa"}]}}
有人可以建议我如何克隆和删除特定元素吗?
更新:要清楚,我需要两个对象。原件必须完好无损,然后是克隆版本,只有所需的属性。
答案 0 :(得分:1)
var obj = {
"config": {
"items": [
{
"k1": "foo",
"k2": "xx",
"k3": "yy"
},
{
"k1": "bar",
"k2": "zz",
"k3": "aa"
}
]
}
};
var cloneObj = _.cloneDeep(obj);
cloneObj.config.items = cloneObj.config.items.filter(function(item) {
return item.k2 === 'xx';
});
console.log(obj);
console.log(cloneObj);