JavaScript/Node.js中获取包含指定字符串的数组元素索引
在JavaScript/Node.js中查找包含指定子串的数组元素索引
嗨,我懂你的困扰——indexOf()只能做精确字符串匹配,所以当你用子串"turt"去查找时,它自然找不到对应的元素啦。下面给你几个实用的解决办法,覆盖不同场景:
方法1:用ES6的findIndex()(推荐)
这是最简洁现代的方式,findIndex()会遍历数组,返回第一个满足条件的元素索引,找不到则返回-1,和indexOf()的行为一致:
const myarr = ["I", "like", "turtles"]; // 用includes()检查子串是否存在 const targetIndex = myarr.findIndex(item => item.includes("turt")); console.log(targetIndex); // 输出:2
如果你需要兼容更旧的环境(比如不支持includes()),可以换成字符串的indexOf()判断:
const targetIndex = myarr.findIndex(item => item.indexOf("turt") !== -1);
方法2:手动遍历(兼容旧环境)
如果你的运行环境不支持ES6+,可以用for循环或者forEach()手动查找:
用for循环(性能更优)
const myarr = ["I", "like", "turtles"]; let targetIndex = -1; for (let i = 0; i < myarr.length; i++) { if (myarr[i].includes("turt")) { targetIndex = i; break; // 找到第一个匹配项就停止遍历 } } console.log(targetIndex); // 输出:2
用forEach()
const myarr = ["I", "like", "turtles"]; let targetIndex = -1; myarr.forEach((item, index) => { if (item.includes("turt") && targetIndex === -1) { targetIndex = index; } }); console.log(targetIndex); // 输出:2
方法3:查找所有匹配的索引
如果你需要找出数组中所有包含指定子串的元素索引,可以用reduce()来收集结果:
const myarr = ["turtles", "like", "turtledove", "cat"]; const allMatchingIndices = myarr.reduce((acc, item, index) => { if (item.includes("turt")) { acc.push(index); } return acc; }, []); console.log(allMatchingIndices); // 输出:[0, 2]
内容的提问来源于stack exchange,提问作者Didi Rumapea
相关产品推荐
相关产品推荐

