JS按日期范围过滤JSON数据异常:预期结果未出现,返回空数组
帮你搞定这个过滤后空数组的问题啦!
嘿,我一眼就瞅出问题在哪了——你的filter回调函数没返回判断结果!Array.filter()这个方法要求回调必须返回一个布尔值,告诉它当前元素要不要留下来。你现在只在回调里做了日期比较,但没把这个比较结果return出去,相当于所有元素都被判定为“不需要保留”,最后自然就得到空数组了。
修正后的代码
var startDate = new Date("2013-3-25"); var endDate = new Date("2017-3-25"); // 把aDate放在回调里声明,避免外部变量被反复修改 var filteredData = this.orders.filter(function(a){ const aDate = new Date(a.fecha); // 关键:一定要return这个判断结果! return aDate >= startDate && aDate <= endDate; }); console.log(filteredData);
额外的小优化
- 把
aDate的声明移到回调内部,这样每次遍历都是独立的变量,不会和外部的aDate互相干扰,代码逻辑更清晰。 - 如果你的
fecha字段格式不是标准的YYYY-MM-DD,部分旧浏览器可能会出现日期解析错误,尽量保证日期字符串是标准格式哦。
内容的提问来源于stack exchange,提问作者1x2x3x4x
相关产品推荐
相关产品推荐

