+
80
-

js中includes、search、IndexOf三者查找字符串有啥区别?

js中includes、search、IndexOf三者查找字符串有啥区别?


网友回复

+
0
-

includes()

includes() 方法用来判断一个数组或字符串中是否包含一个指定的值,如果是则返回 true,否则返回false。

console.log("I love bfw".includes("bfw"));
console.log("i love bfw  社区".includes('社区')); 

let d = ['a','b','c'].includes('a')
console.log(d); //true

indexOf()

indexOf() 方法可返回数组或字符串中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。 如果在数组中没找到指定元素则返回 -1。
let d = ['a','b','c']
console.log(d.indexOf('b'));
console.log("i love bfw".indexOf('love')); 
console.log("i love bfw  社区".indexOf('社区')); 

对比includes与indexOf不难发现

includes()返回值是布尔值,indexOf()返回的是索引值,如果没有返回-1,而且两者不支持忽略大小写查找。

search()

search() 方法用于检索字字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

如果没有找到任何匹配的子串,则返回 -1,这个是支持正则匹配及大小写设置的。

console.log("i love bfw".search('love')); 
console.log("i love bfw  社区".search('社区')); 
var words="I love Bfw 社区";

console.log(words.search(/bfw/gi));

console.log(words.search(/社区/gi));

还有一种match

match()

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,返回的是匹配的结果信息,可包含多个匹配结果及index值,没有找到就返回null

第一种用法:字符串匹配

var strs = "hello world";
var ret = strs.match("hello");
console.log(ret);

如果没有匹配到“hello”,则会返回null 第二种用法:正则表达式匹配 var strss="1 plus 2 equal 3"; var retss= strss.match(/\d+/g) console.log(retss);

对比search与match我们会发现,两者都支持字符串匹配及正则匹配,但是search返回是找到符合匹配的第一个index值,未找到返回-1,但是match返回的是所有的匹配字符串相关信息,包含找出的值及index,输入的值等信息,如果没有匹配或找到,就返回null。

我知道答案,我要回答