У меня есть требование клонировать объект 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"}]}}
Может ли кто-нибудь посоветовать, как я могу клонировать и удалять определенные элементы?
ОБНОВЛЕНИЕ: Чтобы было ясно, мне нужно два объекта. Оригинал должен быть неповрежденным, а затем клонированная версия только с нужными свойствами.