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

如何校验日期数组值是否存在于对象数组并提取对应值生成新数组

日期数组匹配销售额生成结果数组实现

处理规则

  • 遍历日期范围选择得到的日期数组,逐个校验日期是否存在于目标订单对象列表中,按以下规则生成新数组:
    • 当前日期不存在于对象列表中时,向新数组推入0
    • 当前日期存在于对象列表中时,找到日期匹配的对应对象,提取其sale_amount字段值推入新数组

示例输入

const dateArray1 = ['2022-02-03','2022-02-04','2022-02-05','2022-02-06','2022-02-07','2022-02-08']

const objArray2 = {
  "orders":[
    {
      "id": 4419830775973,
      "sale_amount" :200,
      'date':'2022-02-03'
    },
    {
      "id": 44198340775973,
      "sale_amount" :100,
      'date':"2022-02-05"
    },
    {
      "id": 4419660775973,
      "sale_amount" :700,
      'date':'2022-02-08'
    },
  ]
}

实现代码

高性能写法(推荐,适配大数据量场景)

先把订单列表转为日期到销售额的映射,避免每次遍历日期都重复扫描整个订单列表,时间复杂度更低:

// 构建日期-销售额映射
const saleValueMap = new Map(
  objArray2.orders.map(orderItem => [orderItem.date, orderItem.sale_amount])
)
// 遍历日期数组生成结果
const newArray = dateArray1.map(date => saleValueMap.get(date) ?? 0)

简化写法(适配小数据量场景)

数据量小时直接用find匹配即可,代码更简洁:

const newArray = dateArray1.map(date => {
  const matched = objArray2.orders.find(order => order.date === date)
  return matched ? matched.sale_amount : 0
})

运行结果

最终生成的newArray输出为:[200, 0, 100, 0, 0, 700],和预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:54:25