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

JavaScript中遍历对象数组并修改指定键对应值的方法

问题解决:将过滤条件中的日期字符串转为Date对象

原始输入的过滤数组:

[
  {
    createdDateTime: {
      '$gte': '2023-02-08T00:00:00.000Z',
      '$lte': '2023-05-09T23:59:59.000Z'
    }
  },
  { user: 'customer' }
]

期望转换后的数组:

[
  {
    createdDateTime: {
      '$gte': new Date('2023-02-08T00:00:00.000Z'),
      '$lte': new Date('2023-05-09T23:59:59.000Z')
    }
  },
  { user: 'customer' }
]

用户已尝试的代码:

var check = filtersFromRequest.some(obj => obj.hasOwnProperty("createdDateTime"));
if(check){
 // stuck here as what to do , 
}

解决方案

你可以通过定位到包含createdDateTime的对象,将其内部的日期字符串转为Date实例,以下是两种常用实现方式:

方式一:直接修改原数组

适合允许改动原数据的场景:

// 找到包含createdDateTime的目标对象
const dateFilter = filtersFromRequest.find(obj => obj.hasOwnProperty("createdDateTime"));
if (dateFilter) {
  // 遍历日期属性,转换为Date对象
  const dateProps = dateFilter.createdDateTime;
  for (const key in dateProps) {
    if (dateProps.hasOwnProperty(key)) {
      dateProps[key] = new Date(dateProps[key]);
    }
  }
}

方式二:创建新数组(不修改原数组)

适合需要保留原数组的场景,使用扩展运算符复制对象避免副作用:

const updatedFilters = filtersFromRequest.map(obj => {
  if (obj.hasOwnProperty("createdDateTime")) {
    return {
      ...obj,
      createdDateTime: {
        ...obj.createdDateTime,
        '$gte': new Date(obj.createdDateTime['$gte']),
        '$lte': new Date(obj.createdDateTime['$lte'])
      }
    };
  }
  // 其他过滤条件直接返回原对象
  return obj;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:17:31