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

如何遍历对象数组,统一嵌套request.createdAt的日期格式?

解决数组中嵌套日期属性转时间戳的问题

你的原代码问题出在几个关键地方:

  • 第二个map里的变量e已经脱离了第一个map的作用域,根本取不到值,所以会返回undefined或者报错
  • 逻辑拆分太零散,先提取属性再过滤再处理,不仅冗余还没达到修改目标对象的目的

下面是更简洁且有效的实现方式:

推荐方案(不修改原数组,返回新数组)

这种方式不会改动原数据,避免意外副作用:

const processedArr = arr.map(item => {
  // 浅拷贝原对象,如需处理更深层级可改用structuredClone做深拷贝
  const newItem = {...item};
  // 检查是否存在嵌套的request.createdAt属性
  if (newItem.request?.createdAt) {
    // 把日期字符串转成毫秒级时间戳,和第一个对象格式一致
    newItem.request.createdAt = Date.parse(newItem.request.createdAt);
  }
  return newItem;
});

直接修改原数组(不推荐,会产生副作用)

如果不需要保留原数组的原始状态,可以直接遍历修改:

arr.forEach(item => {
  if (item.request?.createdAt) {
    item.request.createdAt = Date.parse(item.request.createdAt);
  }
});

原代码问题详解

你之前的代码执行流程完全偏离预期:

  1. 第一个map生成数组[undefined, "2022-11-09 17:26:51 UTC"]
  2. filter后只剩日期字符串,得到["2022-11-09 17:26:51 UTC"]
  3. 第二个map里的e是未定义的,所以e?.request为假,返回null,最终得到[null]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:40:28