【问题标题】:How to get Data in the main array when filtering in the Sub Array在子数组中过滤时如何获取主数组中的数据
【发布时间】:2021-10-28 00:03:36
【问题描述】:

我有这些数据,我在其中过滤了 vendorId 和产品的用户 ID,它与这样的东西一起使用:

代码:

const data = [
  {
    id: 6,
    orderedItems: [
      {
        name: "Product A",
        vendor: 1,
      },
      {
        name: "Product B",
        vendor: 1,
      },
      {
        name: "Product B",
        vendor: 2,
      },
    ],
  },
  {
    id: 6,
    orderedItems: [
      {
        name: "Product Aaa",
        vendor: 1,
      },
      {
        name: "Product Bbb",
        vendor: 1,
      },
      {
        name: "Product Ccc",
        vendor: 2,
      },
    ],
  },
];

const userId = 1;

const filteredData = data.map(({ orderedItems }) => {
  return orderedItems.filter(({ vendor }) => {
    return vendor == userId;
  });
});

console.log(filteredData);

它记录或返回如下内容:

[
  [
    { name: 'Product A', vendor: 1 },
    { name: 'Product B', vendor: 1 }
  ],
  [
    { name: 'Product Alif', vendor: 1 },
    { name: 'Product Baa', vendor: 1 }
  ]
]

我希望它返回类似这样的东西,不仅是订购的物品,而且是这样的:

[
  {
    id: 6,
    orderedItems: [
      { name: "Product A", vendor: 1 },
      { name: "Product B", vendor: 1 },
    ],
  },
  {
    id: 5,
    orderedItems: [
      { name: "Product Alif", vendor: 1 },
      { name: "Product Baa", vendor: 1 },
    ],
  },
];

仍然过滤,但包含所有需要的数据。如果您有任何问题和需要澄清,请在下方评论。谢谢

【问题讨论】:

    标签: javascript arrays json object filter


    【解决方案1】:

    请更新您的代码。

    const filteredData = data.map(({ id, orderedItems }) => {
        return {id: id, orderedItems: orderedItems.filter(({ vendor }) => vendor == userId)};
    });
    

    【讨论】:

    • 感谢您回答这是我所需要的
    • 我这里只是对 cme​​ts 进行了一些更改,因为过滤后的有序项目已经返回,但是当我没有 userId 时,它返回数据 Id 但orderedItems 为空,我如何也将 id 设为空。
    【解决方案2】:

    在代码中进行这些更改。

    const userId = 1;
    const filteredData = data.map(({id, orderedItems }) => {
    var orderedItems = orderedItems.filter(({ vendor }) => {
        return vendor == userId;
    });
        return  {id, orderedItems}
    });  
        
    filteredData.forEach( (item, index) => {
        console.log(item);
    });
    

    【讨论】:

    • 感谢您的回答我赞成您的回答。这也是我需要的
    • 我这里只是对 cme​​ts 进行了一些更改,因为过滤后的有序项目已经返回,但是当我没有 userId 时,它返回数据 Id 但orderedItems 为空,我如何也将 id 设为空。
    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 2020-07-24
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多