如何高效获取日期字符串数组中首个符合条件元素的索引?
更高效的实现方式
你的当前代码能正常运行,但存在两次遍历数组的性能浪费问题:find会先遍历数组找到第一个符合条件的元素,之后indexOf又会从头遍历一次数组定位该元素的索引,数组规模越大,这种冗余遍历的影响越明显。
更高效的实现是直接使用数组的findIndex方法,它只需要一次遍历就能完成任务:
// 提前解析目标日期,避免循环中重复创建相同的Date实例 const targetDate = new Date(dataDate); const dateIndex = dates.findIndex(e => new Date(e) > targetDate);
额外优化说明:把new Date(dataDate)的解析逻辑提到循环外部,避免每次判断条件时重复创建同一个Date对象,能进一步提升性能(尤其当数组元素数量较多时)。
如果数组为空或没有符合条件的元素,findIndex会返回-1,和你原代码的行为完全一致(原代码中find返回undefined时,indexOf也会返回-1)。
内容的提问来源于stack exchange,提问作者Malvinka
相关产品推荐
相关产品推荐

