Typescript:过滤表并返回每个映射项

时间:2018-04-16 15:48:08

标签: javascript angular typescript ecmascript-6 ecmascript-5

我有一个如下所示的数组映射操作:

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

我想知道如何使用我的优化方式(第二

想法

1 个答案:

答案 0 :(得分:3)

您可以使用...扩展运算符将剩余的对象属性扩展为值,然后再次使用扩展运算符将这些属性从存储的对象传播回目标对象。

res.map(({ code: id, name: itemName, ...otherProps }) => ({
  id, itemName, ...otherProps,
}));

请注意,这会删除原始的codename属性。如果您仍然需要这些,那么您也必须明确添加它们。

res.map(props => ({
  id: props.code,
  itemName: props.name,
  ...props,
}));

当你说filter我认为你指的是采用特定属性时 - 在这种情况下使用解构。这与集合filter操作不同,后者根据投影函数的结果从集合中删除元素。