如何通过JQuery查询DOM生成指定格式的JavaScript数组?
解决jQuery生成moment日期数组的问题
我看了你的代码,问题其实很明显——你在设置obj_date.end的时候,错误地使用了ndate_group[0],而不是对应的结束日期索引ndate_group[1]。这就导致每个对象的start和end都是同一个日期,不符合你想要的结果。
另外,还有几个小细节可以优化,让代码更健壮、可读性更强:
下面是修正后的完整代码:
var availFruits = []; $(".avails").each(function(i, element) { // 分割日期对,确保每个.avails的value格式是"DD/MM/YYYY,DD/MM/YYYY" var datePair = $(element).val().split(","); // 检查分割后是否有两个有效日期值,避免格式错误导致的问题 if (datePair.length === 2) { var dateObj = { start: moment(datePair[0].trim(), "DD/MM/YYYY"), end: moment(datePair[1].trim(), "DD/MM/YYYY") }; console.log(dateObj); availFruits.push(dateObj); } else { console.warn("无效的日期格式:" + $(element).val()); } });
额外说明:
- 添加了格式校验:增加了
if (datePair.length === 2)的判断,避免因为DOM元素值格式错误导致生成无效的日期对象 - 去除空格:用
.trim()处理分割后的日期字符串,防止用户输入时不小心加了空格影响moment解析 - 变量名优化:把
avail_fruits改成驼峰式的availFruits,把objer改成element,更符合JavaScript的命名规范
这样修改后,就能生成你想要的格式的数组了,每个对象都会包含正确的起始和结束moment日期对象。
内容的提问来源于stack exchange,提问作者Intekhab Khan
相关产品推荐
相关产品推荐

