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

如何基于status字段筛选嵌套数组中的任务列表为Open/Closed状态?

按status筛选taskList任务的正确实现方法

你当前的代码问题在于,_.filter(data, { taskList: [ { status: "open" } ]})是在判断整个data条目是否存在至少一个status为open的任务,而不是去过滤每个条目里的taskList数组内容,所以才会返回包含全部任务的完整数组。

要实现每个createdOn对应的taskList仅保留指定status的任务,你需要结合_.map和_.filter:遍历每个数据条目,保留原有的createdOn字段,同时对taskList进行筛选。

筛选status为"open"的任务

const openTasks = _.map(data, item => ({
  ...item,
  taskList: _.filter(item.taskList, { status: "open" })
}));

console.log(openTasks);

筛选status为"closed"的任务

只需要把筛选条件里的status值改成"closed"即可:

const closedTasks = _.map(data, item => ({
  ...item,
  taskList: _.filter(item.taskList, { status: "closed" })
}));

console.log(closedTasks);

验证结果

以你提供的示例数据为例,openTasks的输出会是:

[
  {
    "createdOn": "Created on Jan 07, 2017",
    "taskList": [ { "task": "Meeting with Ram", "status": "open" } ]
  },
  {
    "createdOn": "Created on Jan 08, 2017",
    "taskList": [ { "task": "Meeting with Mike", "status": "open" } ]
  }
]

完全符合你期望的每个createdOn对应taskList仅保留指定status任务的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:42:07