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

Lodash链式调用取值异常:返回空数组问题求助

解决Lodash链式调用返回空数组的问题

我一眼就看到你的Lodash链式调用里犯了个常见的小错误——你给每个链式方法都重复传入了$scope.meetings,这直接导致整个链的逻辑完全出错,最后返回空数组。

问题根源

Lodash的_.chain()已经把$scope.meetings包装成了链式操作的初始集合,后续的每个链式方法(比如orderBy、filter、forEach)都会自动用上一步操作的结果作为当前方法的处理对象,不需要再手动传入原数组。你额外传入的$scope.meetings会被当成方法的第一个参数(比如orderBy的迭代器参数),导致方法逻辑完全偏离预期。

修正后的代码

把每个方法里多余的$scope.meetings参数去掉就可以了:

let wrapper = _.chain($scope.meetings)
  .orderBy(function(o) { return new moment(o.meetingDate); }, ['asc'])
  .filter(function(o) { return moment(o.meetingDate).isAfter(begin) && moment(o.meetingDate).isBefore(end); })
  .forEach(function(o) { o.createdBy = $scope.myData[0].fullName; })
  .value();

额外检查点

如果修正后还是返回空数组,建议排查以下几点:

  • 确认begin和end是有效的moment对象,如果是字符串格式的日期,记得用moment(begin)、moment(end)转换后再进行比较。
  • 检查$scope.meetings本身是否为空数组,如果原集合就没有数据,结果自然是空的。
  • 验证o.meetingDate的格式是否能被moment正确解析,如果格式不匹配,moment会返回无效日期,导致isAfter/isBefore的判断逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:48:21