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

如何使用JavaScript将两个日期数组合并为包含moment对象的新数组

错误排查
  • 变量重复声明错误:你先将daterange初始化为数组,紧接着又把它赋值为JSON.stringify(response)生成的字符串,字符串没有数组的push方法,调用就会报错
  • 变量拼写错误:代码里的sart.push是笔误,正确应为start.push
  • JS对象语法错误:向数组添加对象时,对象需要用{}包裹,键值对用冒号:分隔,不是=>
  • 日期解析格式缺失:你给出的原始日期是DD/MM/YYYY格式,moment默认解析可能识别错误,需要显式指定解析格式
  • 变量覆盖问题:你已经提前定义了有值的start和end数组,后续代码又重新把这两个变量赋值为空数组,浪费了已有的数据资源
正确实现方案

场景1:直接使用你已有的两个数组合并

// 现有原始数组
var start = [ "11/10/2021", "05/10/2021", "16/10/2021", "03/10/2021" ]
var end = [ "10/10/2021", "04/10/2021", "15/10/2021", "01/10/2021" ]

var daterange = []
for (var i = 0; i < start.length; i++) {
  // 显式指定日期格式DD/MM/YYYY解析,避免识别错误
  daterange.push({
    start: moment(start[i], 'DD/MM/YYYY'),
    end: moment(end[i], 'DD/MM/YYYY')
  })
}

场景2:从接口返回的response数据生成

var start = [];
var end = [];
var daterange = [];
// 直接解析response,不要覆盖daterange的数组类型
var textdiv = JSON.parse(JSON.stringify(response));
for (var i = 0; i < textdiv.length; i++) {
  start.push(textdiv[i].a);
  end.push(textdiv[i].b);
  daterange.push({
    start: moment(textdiv[i].a, 'DD/MM/YYYY'),
    end: moment(textdiv[i].b, 'DD/MM/YYYY')
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:06:03