lodash:深拷贝对象但不是所有属性

lodash: deep copy object but not all properties

有没有办法用lodash复制一个对象,但不是所有的属性。 我知道的唯一方法是 属性 属性

手动复制它

想要例如:

var obj = {
    a: 'name',
    b: [1,2,3],
    c: {
        z: 'surname',
        x: []
    },
    d: {
        y: 'surname2',
        w: []
    }
};

结果就像

var copy_obj = {
    b: [1,2,3],
    c: {
        z: 'surname',
        x: []
    }
};

编辑: 我最终选择了:

var blacklist = ['a','d'];
_.cloneDeep(_.omit(obj, blacklist));

您可以使用 pick 函数:

_.pick(obj, 'b', 'c')

您可以使用 JSON.stringify 的第二个参数来执行此操作。

JSON.parse(JSON.stringify(obj, ['b', 'c']))

omit 几乎完全符合这个目的:

_.cloneDeep(_.omit(obj, blacklist));

Fiddle 这里:https://jsfiddle.net/c639m9L2/

var blacklist = ['a','d'];
_.cloneDeep(_.omit(obj, blacklist));

您可以组合使用 assignpick

Object.assign(copy_obj, _.pick(obj, ['b', 'c']));

通过这种方式,如果 copy_obj 有其他属性,您不会覆盖它们。