我有一个如下所示的数组映射操作:
this.itemsList= res.map( ( x, index ) => {
x.id = x.code;
x.itemName = x.name;
return x;
} );
我试图像(第二种方式)那样优化它:
this.itemsList = res.map(({code: id, name: itemName}) => ({id, itemName}));
但我需要返回数组的每个映射元素(return x
)
我想知道如何使用我的优化方式(第二)
想法
答案 0 :(得分:3)
您可以使用...
扩展运算符将剩余的对象属性扩展为值,然后再次使用扩展运算符将这些属性从存储的对象传播回目标对象。
res.map(({ code: id, name: itemName, ...otherProps }) => ({
id, itemName, ...otherProps,
}));
请注意,这会删除原始的code
和name
属性。如果您仍然需要这些,那么您也必须明确添加它们。
res.map(props => ({
id: props.code,
itemName: props.name,
...props,
}));
当你说filter
我认为你指的是采用特定属性时 - 在这种情况下使用解构。这与集合filter
操作不同,后者根据投影函数的结果从集合中删除元素。