查找含指定字符串片段的数组元素索引 求更优实现方案
更简洁高效的数组元素索引查找方案
嘿,你的需求完全可以用JavaScript内置的数组方法来简化实现,比手动写for循环清爽多啦!
推荐方案:使用findIndex()方法
findIndex()是专门为这类“查找符合条件元素的索引”场景设计的,它会遍历数组,找到第一个满足回调条件的元素后立刻返回其索引,找不到则返回-1,和你原来的循环逻辑一致,但写法更简洁:
const myArray = ["apple","banana","cherry"]; // 用includes检查子串,语法更直观 const targetIndex = myArray.findIndex(item => item.includes("nana")); console.log(targetIndex); // 输出 1
补充:兼容性适配(针对旧环境)
如果需要兼容不支持includes()的旧浏览器,可以换回你原来用的indexOf(),搭配findIndex()依然很简洁:
const targetIndex = myArray.findIndex(item => item.indexOf("nana") !== -1);
为什么这方案更好?
- 可读性更高:方法名
findIndex直接表明了意图,回调函数的逻辑也一目了然 - 代码更简洁:省去了手动维护循环变量
i的麻烦 - 效率相当:和你原来的循环一样,都是找到第一个匹配项就终止遍历,不会多余遍历后续元素
内容的提问来源于stack exchange,提问作者Kad




