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

多层对象数组的Map与Filter处理:筛选非null的flaggedItem

解决思路及代码示例

首先你提供的JSON数据存在语法错误(对象最后一个属性后的多余逗号、数组未正确闭合),先修正为合法格式:

const myData = [
  {
    "id": "id1",
    "items": [
      {
        "id": "idOne",
        "flaggedItem": null
      },
      {
        "id": "idTwo",
        "flaggedItem": 1
      }
    ]
  },
  {
    "id": "id2",
    "items": [
      {
        "id": "idThree",
        "flaggedItem": 1
      },
      {
        "id": "idFour",
        "flaggedItem": 2
      }
    ]
  }
];

场景1:保留原数据结构,仅过滤每个父对象中flaggedItem不为null的items

你的原代码核心问题是map没有返回处理后的结果,且filter条件仅判断filteredItems.flaggedItem会误过滤0这类假值,应该明确判断不为null:

const filteredData = myData.map(obj => ({
  ...obj,
  items: obj.items.filter(item => item.flaggedItem !== null)
}));

// 打印筛选后的完整结构
console.log(filteredData);

这段代码会返回和原结构一致的数组,每个父对象的items数组仅保留flaggedItem不为null的条目。

场景2:提取所有flaggedItem不为null的items为扁平数组

如果不需要保留父对象结构,只想拿到所有符合条件的子项,用flatMap更高效:

const allFlaggedItems = myData.flatMap(obj => 
  obj.items.filter(item => item.flaggedItem !== null)
);

// 打印所有符合条件的子项
console.log(allFlaggedItems);

原代码问题总结

  • 未返回map处理后的结果,导致无法获取最终筛选数据
  • filter条件逻辑不严谨,会误过滤flaggedItem为0、空字符串等假值的条目,需明确判断!== null
  • 原始JSON存在语法错误,修正后才能正常解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:00:05