Javascript 在momentjs中重用日期对象
我有一个正在过滤的Javascript集合。在回调中,我实例化了一个新的Javascript 在momentjs中重用日期对象,javascript,filter,momentjs,Javascript,Filter,Momentjs,我有一个正在过滤的Javascript集合。在回调中,我实例化了一个新的moment对象,它破坏了过滤函数 var today = new moment().format('YYYY-MM-DD'); return this.collection.filter((vocab) => { let benchmarkDate = new moment(vocab.interval_benchmark_date).format(); return benchmarkDate.isAft
moment
对象,它破坏了过滤函数
var today = new moment().format('YYYY-MM-DD');
return this.collection.filter((vocab) => {
let benchmarkDate = new moment(vocab.interval_benchmark_date).format();
return benchmarkDate.isAfter(today);
});
是否可以在筛选器之前实例化时刻
对象,然后在筛选器回调的每次迭代中重用它,并使用每个新日期重置它?TLDR-从中删除.format()
让benchmarkDate=新时刻(vocab.interval\u benchmark\u date).format()代码>和您的筛选应该再次工作.format()
创建一个日期字符串值,而不是像以前那样创建一个矩对象,因此它无法访问原始矩方法,如.isAfter()
是否可以在筛选器之前实例化矩对象,然后在筛选器回调的每次迭代中重用它,或者使用每个新日期重置它
是的,您当然应该这样做,因为大量使用的moment()
(可能是这样的循环)会带来不菲的成本,最终可能会成为性能瓶颈。调用的moment()
越少越好。可以在任何地方重复使用(使用.add()等进行修改时除外,因为矩会直接改变数据)
然而,在这里的特定实例中,您对不同日期/时间信息的迭代产生了不同的时刻,您可以通过在每次迭代中改变相同的时刻(通过使用.reduce()
方法持续处理以前的结果)来避免这种情况
另外,您正在执行let benchmarkDate=…format()
,这将创建一个字符串
,然后您尝试在其上运行.isAfter()
,但它将不存在,因为它不再是时刻
对象。由于.format()
的结果未被使用,因此您可以将其删除,这样就可以了
哦,moment()
函数不需要new
关键字来返回对象