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));
您可以组合使用 assign 和 pick
Object.assign(copy_obj, _.pick(obj, ['b', 'c']));
通过这种方式,如果 copy_obj 有其他属性,您不会覆盖它们。
有没有办法用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));
您可以组合使用 assign 和 pick
Object.assign(copy_obj, _.pick(obj, ['b', 'c']));
通过这种方式,如果 copy_obj 有其他属性,您不会覆盖它们。