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

如何根据createdAt字段过滤数组对象中的customers数据?

实现嵌套对象中customers数据的条件过滤

你可以通过JavaScript的数组map和filter方法结合对象扩展运算符来实现这个需求,核心是遍历嵌套结构并保留符合条件的数据,同时不修改原对象:

const data = {
  "title": "sunny",
  "members": [
    {
      "fullname": "rozo",
      "customers": [
        { "name": "test11", "createdAt": 3 },
        { "name": "test12", "createdAt": 4 },
        { "name": "test13", "createdAt": 5 }
      ]
    },
    {
      "fullname": "luffy",
      "customers": [
        { "name": "test6", "createdAt": 9 },
        { "name": "test7", "createdAt": 10 },
        { "name": "test8", "createdAt": 11 }
      ]
    }
  ]
};

// 生成过滤后的新数据
const filteredData = {
  // 复制原对象的title属性
  ...data,
  // 遍历members数组,处理每个成员的customers
  members: data.members.map(member => ({
    // 复制当前member的fullname等其他属性
    ...member,
    // 过滤customers数组,保留符合条件的项
    customers: member.customers.filter(customer => {
      // 注意:这里根据你给出的期望结果调整为>=4且<=10
      // 如果严格按你描述的"大于4且小于10",则改为 customer.createdAt > 4 && customer.createdAt < 10
      return customer.createdAt >= 4 && customer.createdAt <= 10;
    })
  }))
};

console.log(filteredData);

代码说明:

  • 使用...扩展运算符复制原对象/数组的属性,确保原数据不会被修改,遵循不可变数据的原则
  • map方法用于遍历members数组,对每个成员进行处理
  • filter方法用于筛选customers数组中符合createdAt条件的对象
  • 条件部分可按需调整:如果严格按照你描述的“大于4且小于10”,则过滤条件改为customer.createdAt > 4 && customer.createdAt < 10,此时test12(createdAt=4)和test7(createdAt=10)会被排除

运行上述代码后,得到的结果与你给出的期望输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:06:27