js中includes、search、IndexOf三者查找字符串有啥区别?
网友回复
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。