js 查找字符串中子串的位置下标 indexof 和slice 两种方法

634 阅读1分钟
var str = '苹果-香蕉-橘子-西瓜-山竹-苹果-桃子-哈密瓜-草莓-葡萄' 
var subStr = '苹果'

方法一用indexof indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

语法:stringObject.indexOf(searchvalue,fromindex)

  • subStr:规定需检索的字符串值。
  • fromindex:从 fromIndex 处进行搜索。如果未找到该值,则返回 -1
var p = str.indexOf(subStr) 
var arr = []
while(p>-1){
  arr.push(p)
  p = str.indexOf(subStr,p+1)
}

方法2

function foo(str, subStr) {
     const result = [];
     for (let index = 0; index < str.length; index++) {
	 const temp = str.slice(index, index + subStr.length)
	 if (temp === subStr) {
	     result.push(index)
	 }
     }
return result;
}
console.log(foo(str, subStr)) // [0,15]