如何使用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
相关产品推荐
相关产品推荐

