You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

过滤子数组orderedItems时如何同时过滤外层主数组对象?

你可以在现有map处理逻辑后链式调用filter方法,过滤掉orderedItems为空的外层对象即可,完整实现如下:

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

const filteredData = data.map(({ id, orderedItems }) => {
  return {
    id: id,
    orderedItems: orderedItems.filter(({ vendor }) => vendor == userId),
  };
// 新增外层过滤,仅保留orderedItems不为空的对象
}).filter(item => item.orderedItems.length > 0);

console.log(JSON.stringify(filteredData, null, 2));

如果处理的数据量较大,也可以用reduce方法一次性完成内层、外层过滤,只遍历一次数组,性能更优:

const filteredData = data.reduce((result, { id, orderedItems }) => {
  const filteredItems = orderedItems.filter(({ vendor }) => vendor == userId);
  if (filteredItems.length) {
    result.push({ id, orderedItems: filteredItems });
  }
  return result;
}, []);

内容的提问来源于stack exchange,提问作者Mohammad Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:45:00