【问题标题】:Typescript : filter a table and return each mapped item打字稿:过滤表并返回每个映射项
【发布时间】:2018-09-26 10:23:25
【问题描述】:

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

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)

我想知道如何使用我的优化方式(2nd

想法??

【问题讨论】:

  • .map(...) 不是过滤函数。您是否只想接收具有iditemName 属性的已处理数组?
  • 您已经通过=> ({ ... }) 隐式返回该项目,所以不确定您的意思?

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-04-05
    • 2022-10-25
    • 2021-01-09
    • 2021-04-02
    • 2022-01-21
    • 2019-11-19
    • 2018-03-13
    • 2019-10-25
    • 2021-12-10
    相关资源
    最近更新 更多