我需要从对象中提取某些属性,然后分配给新对象。以传统方式,我可以将对象属性所需的内容手动分配给新对象的属性。
当前,我在原始对象上使用delete运算符并创建一个新对象。
有没有更好的方法可以做到这一点。
答案 0 :(得分:4)
您可以解构一个对象并选择不需要的对象,然后将其余部分作为结果对象。
它使用
{ [key]:_, ...result } = object;
^^^^^
{ [key]:_, ...result } = object;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Assigning to new variable names(已不再使用)和
{ [key]:_, ...result } = object;
^
{ [key]:_, ...result } = object;
^^^
var object = { a: 1, b: 2, c: 3 },
key = 'a',
{ [key]:_, ...result } = object;
console.log(result);
答案 1 :(得分:2)
使用ES6解构运算符,您可以执行
ler arr = [{id:1, name: foo}, {id:2, name: bar}]
arr.map({id, ...item} => {
return item
})
考虑要删除id属性,以上代码将删除id属性并返回包含name属性的对象。
答案 2 :(得分:0)
您必须通过复制旧属性中的所有属性来创建新对象,但要删除的属性除外:
const person = {
name: 'abc',
age: 25
};
console.log(person);
const age = 'age';
const newPerson = Object.keys(person).reduce((object, key) => {
if (key !== age) {
object[key] = person[key]
}
return object
}, {});
console.log(newPerson);