
javascript高效计算数组中满足时间区间条件的元素个数
本文介绍一种高效方法,用于计算一个数组中,元素的时间范围与另一个数组中指定的时间区间匹配的元素个数。 假设我们有两个数组:paiban 和 paiban2,我们需要确定paiban2中哪些元素的时间范围落在paiban中每个元素定义的时间区间内。
解决方案
为了提高效率,我们避免嵌套循环,利用filter方法结合some方法来实现。
遍历 paiban 数组: 使用map方法迭代paiban数组中的每个时间区间。
使用 filter 筛选 paiban2: 对于paiban中的每个时间区间,使用filter方法筛选paiban2,只保留满足时间条件的元素。 这里关键在于使用some方法来判断paiban2中的元素是否在paiban元素定义的时间范围内。
返回筛选结果的长度: filter方法返回一个新的数组,包含所有满足条件的元素。我们只需要返回这个新数组的长度,即满足条件的元素个数。
代码示例
var paiban = [ { id: 1, starttime: '08:00', mouth: 10, endtime: '09:00', checked: false }, { id: 2, starttime: '09:00', mouth: 10, endtime: '10:00', checked: false }, { id: 3, starttime: '10:00', mouth: 10, endtime: '11:00', checked: false },];var paiban2 = [ { id: 1, starttime: '08:00', endtime: '08:10' }, { id: 2, starttime: '08:10', endtime: '08:20' }, { id: 3, starttime: '08:30', endtime: '08:50' }, { id: 4, starttime: '09:00', endtime: '09:10' }, { id: 5, starttime: '09:10', endtime: '09:20' }, { id: 6, starttime: '10:00', endtime: '10:10' }, { id: 7, starttime: '10:10', endtime: '10:20' }, { id: 8, starttime: '10:20', endtime: '10:40' },];const result = paiban.map(item => { return paiban2.filter(item2 => { return item2.starttime >= item.starttime && item2.endtime <= item.endtime; }).length;});console.log(result); // [3, 2, 3]
这段代码将输出 [3, 2, 3],准确地反映了paiban2中每个时间区间在paiban对应时间区间内的元素个数。 该方法比单纯的嵌套循环更高效,尤其在处理大型数组时优势更为明显。 请注意,此代码假设时间格式为 HH:mm,且endtime > starttime。 对于更复杂的时间格式或条件,需要进行相应的调整。
以上就是如何用JS高效计算数组中满足时间区间条件的元素个数?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1560947.html
微信扫一扫
支付宝扫一扫