【问题标题】:JavaScript Array Filtering and Mapping Problem. How to do nesting filtering?JavaScript 数组过滤和映射问题。如何进行嵌套过滤?
【发布时间】:2021-03-15 02:50:27
【问题描述】:

假设,我有一个数组。

const arr = [
      {
        category: 'Diner',
        item: [
          {name: 'Chicken Rice', price: 200},
          {name: 'Mutton Rice', price: 300},
        ],
      },
      {
        category: 'Breakfast',
        item: [
          {name: 'Tea Bisuit', price: 100},
          {name: 'Bread Butter', price: 300},
          {name: 'Green Tea', price: 80},
        ],
      },
    ];

如何根据项目名称过滤数组? 例如,如何过滤项目名称为 Green Tea 的数组?

输出必须是这样的:

arr = [
        {
          category: 'Breakfast',
          item: [
            {name: 'Green Tea', price: 80},
          ],
       },
     ];

【问题讨论】:

    标签: javascript arrays sorting mapping filtering


    【解决方案1】:

    您可以通过maparr,对每个元素过滤item 以匹配该术语

    之后filterarr再次拒绝item为空的元素

    const arr = [ { category: "Diner", item: [ { name: "Chicken Rice", price: 200 }, { name: "Mutton Rice", price: 300 }, ], }, { category: "Breakfast", item: [ { name: "Tea Bisuit", price: 100 }, { name: "Bread Butter", price: 300 }, { name: "Green Tea", price: 80 }, ], }, ]
    
    const term = "Green Tea"
    
    const res = arr
      .map((categoryAndItems) => ({
        category: categoryAndItems.category,
        item: categoryAndItems.item.filter((item) => item.name === term),
      }))
      .filter((categoryAndItems) => categoryAndItems.item.length > 0)
    
    console.log(res)

    【讨论】:

    • 小建议,先过滤再映射。您不需要转换将被过滤掉的对象
    • @Rajesh 当然,谢谢。可以一口气过滤,我只是想澄清一下步骤?
    猜你喜欢
    • 2022-01-13
    • 2019-05-24
    • 2021-08-26
    • 2020-11-23
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2022-01-14
    • 2020-08-25
    相关资源
    最近更新 更多