You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:36:33