如何检查字符串是否在数组元素的指定索引位置出现
解决方案:检查目标字符串是否在数组元素的指定索引位置
你的核心需求是判断目标子串是否出现在数组元素的指定位置范围(比如示例中的起始位置),而非任意位置。原代码用includes会匹配所有包含子串的元素,不符合需求,这里提供两种针对性修改方案:
方案1:检查子串是否在元素的起始位置(匹配你的示例需求)
如果只需要验证目标子串从元素的索引0开始出现,直接使用字符串的startsWith()方法即可,它会精准判断字符串是否以目标子串开头:
const myArray = ['test blah', 'this is test', 'testing 234', 'nothing']; const check = 'te'; for (let i = 0; i < myArray.length; i++) { if (myArray[i].startsWith(check)) { console.log(myArray[i]); // 输出 'test blah' 和 'testing 234' } }
方案2:检查子串是否在任意指定索引位置
如果后续需要验证子串出现在某个特定索引(比如从索引2开始),可以通过slice()截取对应位置的子串,再和目标字符串对比:
const myArray = ['test blah', 'this is test', 'testing 234', 'nothing']; const check = 'es'; const targetIndex = 1; // 指定要检查的起始索引 for (let i = 0; i < myArray.length; i++) { const currentStr = myArray[i]; // 截取从targetIndex开始、长度等于check的子串,对比是否相等 if (currentStr.slice(targetIndex, targetIndex + check.length) === check) { console.log(currentStr); // 输出 'test blah' 和 'testing 234',二者索引1开始的子串都是'es' } }
关键说明
startsWith()是ES6新增方法,兼容性良好;若需兼容旧环境,可直接用方案2的截取对比方式替代。- 方案2的优势是灵活性强,可指定任意起始索引,只需保证截取的子串长度和目标字符串一致即可。
内容的提问来源于stack exchange,提问作者seriously
相关产品推荐
相关产品推荐

