Node.js и lodash — клонировать объект JSON, возвращающий только определенный элемент

У меня есть требование клонировать объект 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"}]}}

Может ли кто-нибудь посоветовать, как я могу клонировать и удалять определенные элементы?

ОБНОВЛЕНИЕ: Чтобы было ясно, мне нужно два объекта. Оригинал должен быть неповрежденным, а затем клонированная версия только с нужными свойствами.


person Ben    schedule 25.01.2015    source источник


Ответы (1)


person    schedule
comment
Из формулировки я считаю, что идея состоит в том, чтобы клонировать, а затем удалить, а не удалить, а затем клонировать. - person chrisbajorin; 25.01.2015
comment
Я не думаю, что это имеет значение вообще... пусть он решает. - person Bazinga; 25.01.2015
comment
@JsIsAwesome - большое спасибо и извинения за неясность. Как предлагает cbajorin, я действительно клонирую, а затем удаляю. Требование состоит в том, чтобы иметь как исходный объект нетронутым, так и модифицированный клон. Соответственно обновил мой вопрос. - person Ben; 26.01.2015
comment
@JsIsAwesome - отличный материал, это действительно полезно :) - person Ben; 26.01.2015