首页 > 解决方案 > 在一系列时刻中查找 moment.js 对象?

问题描述

我有一系列 moment() moment.js 对象。对象包含日期和开始时间,任何给定日期都可以有 N 个对象。

我无法弄清楚如何搜索数组并返回给定日期内的所有时刻。是否可以在不遍历整个数组的情况下做到这一点?(大约 500 个对象)

var dateTimeList = [];
// Grabs a bunch of date\times converts them to moments, adds to array
dateTimeList.push(moment(data[i]["start_date"]  + data[i]["begintime"], "YYYYMMDDHHmm"));

 function dateSelected(someSpecificDay, dateTimeList){
       var startDate = moment(someSpecificDay);
       var endDate = startDate.endOf('day');
       var matchingMoments = [];
       // Stuck here, How can i use inArray(){} to add the moment if it falls within that particular day?
 }

示例输入(为清楚起见更改了格式):

 12/31/2019 09:00
 1/1/2020 13:00
 1/1/2020 14:00
 1/1/2020 08:00
 1/3/2020 09:00

On Date Selected (Selected Date 1/1) 返回:

 1/1/2020 13:00
 1/1/2020 14:00
 1/1/2020 08:00

在选定日期(选定日期 1/5)返回:

Nothing

标签: javascriptmomentjs

解决方案


是否可以在不遍历整个数组的情况下做到这一点?

不,您必须遍历整个数组。无论您使用什么方法,它都会在引擎盖下遍历整个数组。

如果您想在没有迭代的情况下执行此操作,则应使用不同的数据结构,例如以天为键的对象。那会让你得到相应的对象dateTimeList["1/1"]


推荐阅读