【问题标题】:How to filter and map an array?如何过滤和映射数组?
【发布时间】:2022-01-14 09:34:59
【问题描述】:

我有这个对象需要过滤它。

let data = JSON.parse(this.getDataFromArray).map((x: any) => x.isEnabled === true);

我只需要在“数据”中获取“isEnabled”为真值的 ID。

【问题讨论】:

  • 嘿@ForkExe,在您提出新问题之前,请尝试进行更多研究。由于这是一个非常简单的问题,并且之前已经回答了太多次,因此您已经可以通过在网站上进行更多滚动来找到解决方案。这是其中之一,我可以找到确切的问题点:stackoverflow.com/questions/31201262/…

标签: javascript


【解决方案1】:

使用Array.prototype.flatMap 实现结果。

const dataArray = [
  { id: 1, name: "Alice", isEnabled: false },
  { id: 2, name: "Bob", isEnabled: true },
  { id: 3, name: "Charlie", isEnabled: true },
  { id: 4, name: "Dave", isEnabled: true },
  { id: 5, name: "Eve", isEnabled: false },
  { id: 6, name: "Frank", isEnabled: false },
];
let data = dataArray.flatMap(elm => elm.isEnabled ? [elm.id]: []);
console.log(data);

请注意,flatMap 不能在没有 polyfill 的情况下在 IE 中使用。

如果需要 IE 支持,请使用Array.prototype.forEach

const dataArray = [
  { id: 1, name: "Alice", isEnabled: false },
  { id: 2, name: "Bob", isEnabled: true },
  { id: 3, name: "Charlie", isEnabled: true },
  { id: 4, name: "Dave", isEnabled: true },
  { id: 5, name: "Eve", isEnabled: false },
  { id: 6, name: "Frank", isEnabled: false },
];
let data = [];
dataArray.forEach((elm) => {
  if (elm.isEnabled) {
    data.push(elm.id);
  }
});
console.log(data);

【讨论】:

  • 好吧,但我只需要存储 ID,而不是所有对象
  • @ForkExe 然后像这样过滤,然后map结果只存储ID的
  • @ForkExe:将答案更新为使用flatMap
  • 不错,没见过flatMap
【解决方案2】:

先试试这个filter,然后map到想要的属性:

JSON.parse(this.getDataFromArray).filter((x: any) => x.isEnabled === true).map((result: any) => result.id);

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 2020-11-23
    • 1970-01-01
    • 2022-01-02
    • 2016-03-27
    • 1970-01-01
    • 2020-11-12
    • 2021-03-15
    相关资源
    最近更新 更多