使用array.map和spread运算符删除和添加属性

时间:2018-07-25 11:12:35

标签: ecmascript-7

我正在尝试处理从api返回的数据。我有一个返回的对象数组。我想删除密码字段,然后添加几个其他字段。我想使用点差运算符,但是我的过程有点笨拙。

myArray.map( item => {
    const newItem = { ...item };
    delete newItem.password;
    newItem.saved = true;
    return newItem;
});

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

给出一个对象数组-

const myArrayOfObjects = [
    {id: 1, keyToDelete: 'nonsense'},
    {id: 2, keyToDelete: 'rubbish'}
];

删除属性keyToDelete,并添加一个值为newKey的新密钥"someVar"

myArrayOfObjects.map(({ keyToDelete, ...item}) => { ...item, newKey:'someVar'});

将数组更新为

[
    {id: 1, newKey:'someVar'},
    {id: 2, newKey:'someVar'}
]

有关删除方法的更多信息,请参见this great post