登录
首页 >  文章 >  前端

如何快速比较数组并计算时间范围子数组长度?

时间:2025-03-06 13:53:57 152浏览 收藏

本文介绍一种高效算法,用于比较两个数组`paiban`和`paiban2`,并计算`paiban2`中满足`paiban`元素时间范围条件的子数组长度。通过遍历`paiban`数组,利用`filter()`方法过滤`paiban2`数组,筛选出starttime和endtime均落在`paiban`元素时间范围内的元素,最终计算并返回每个`paiban`元素对应的子数组长度,实现精准的时间范围匹配。文章提供JavaScript代码示例,并详细解释了算法步骤,帮助读者快速掌握该方法。

如何比较两个数组,并计算满足时间范围条件的子数组长度?

高效计算满足时间条件的子数组长度

本文介绍一种方法,用于比较两个数组paibanpaiban2,并计算paiban2中元素的starttimeendtime都位于paiban相应元素时间范围内的子数组长度。

假设paiban2中的元素需要满足paiban中对应元素的时间范围条件。 例如,如果paiban2中的多个元素都满足paiban中某个元素的时间条件,则这些元素构成一个子数组。我们需要计算每个paiban元素对应的子数组长度。

为了实现这一目标,我们可以采用以下步骤:

  1. 遍历paiban数组: 依次处理paiban中的每个元素。

  2. 过滤paiban2数组: 对于paiban中的每个元素,使用filter()方法过滤paiban2数组。过滤条件是:paiban2元素的starttimeendtime必须在paiban元素的starttimeendtime之间。

  3. 计算子数组长度: filter()方法返回满足条件的paiban2元素的数组。该数组的长度即为对应的子数组长度。

  4. 存储结果: 将计算得到的子数组长度存储到一个新的数组中,该数组与paiban数组一一对应。

以下是使用JavaScript实现的代码示例:

const 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 },
];

const 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 lengths = paiban.map(item =>
  paiban2.filter(({ starttime, endtime }) =>
    starttime >= item.starttime && endtime <= item.endtime
  ).length
);

console.log(lengths); // [3, 2, 3]

这段代码修正了之前的错误,确保了时间范围的正确比较。 结果数组lengths将包含每个paiban元素对应的子数组长度。

终于介绍完啦!小伙伴们,这篇关于《如何快速比较数组并计算时间范围子数组长度?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>