查找某个值中是否存在的几个好方法

449 阅读3分钟

伊始

大家应该都遇到过一些查找字符串、数组中是否包含某个元素的情况,下面我来给大家介绍几个函数,方便大家查找这些值,增加摸鱼时间

字符串

startsWith() 方法用于检测字符串是否以指定的前缀开始。

返回一个boolean值,以某个字符串开头返回true,否则返回一个false

 var str = 'abcd'
 str.startsWith('a'); // true
 str.startsWith('b'); // false

search

参数

  • regexp

    一个正则表达式(regular expression)对象

    如果传入一个非正则表达式对象 regexp,则会使用 new RegExp(regexp) 隐式地将其转换为正则表达式对象。

返回值:如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1

注意: search 函数区分大小写

 var str = 'aAb';
 str.search('b'); // 2

match

参数:一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp 。如果你没有给出任何参数并直接使用match() 方法 ,你将会得到一 个包含空字符串的 Array :[""] 。

返回值:

  • 如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
  • 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。

附加属性

如上所述,匹配的结果包含如下所述的附加特性。

  • groups: 一个捕获组数组 或 undefined(如果没有定义命名捕获组)。
  • index: 匹配的结果的开始位置
  • input: 搜索的字符串.
 var str = 'aAb';
 ​
 str.match('a')
 ['a', index: 0, input: 'aAb', groups: undefined]0: "a"groups: undefinedindex: 0input: "aAb"length: 1[[Prototype]]: Array(0)
 ​
 str.match(/a/g)
 ['a']0: "a"length: 1[[Prototype]]: Array(0)
 ​
 str.match(/[a-z]/g)
 (2) ['a', 'b']

如果传入的是一个正则,那么就只会返回一个匹配值组成的数组,如果传入的是一个字符串,那么就会有附加项。 [MDN match链接](String.prototype.match() - JavaScript | MDN (mozilla.org))

字符串和数组

includes

字符串中是否包含某段字符,包含返回true,不包含返回false。

注意: 该方法区分大小写。

 var str = '123456789';
 str.includes('23'); // true
 str.includes('10'); // false
 str.includes('1'); // true
 str.includes('13'); // false

includes也可以用于数组,查找数组中是否包含某个值,有返回true没有返回false

indexOf

字符串或数组中有某个值返回第一个值的索引,如果没有返回 -1

注意:只能返回第一个符合条件的值的索引

 var str = '123456789';
 str.indexOf('345'); // 返回2
 
 var arrs=[1,2,3,4,5,6]
 arrs.indexOf(2); // 1

数组

find()

find 的参数是一个函数,仅作用于数组

遍历一个是数组,找到参数函数中的断言并返回其值,如果没有符合条件的值,那么返回undefined。

注意: find函数只能返回第一个符合条件的值。

 const arr = [1,2,3,4,5,6,7,8,9];
 ​
 const result = arr.find(item => {
     return item % 2 === 0;
 })
 console.log(result); // 2

findIndex()

findIndex 的用法与 find 一致,仅作用于数组

遍历一个数组,找打参数函数中的的断言,并返回该值的索引,这是与 find 不同的地方,如果没有找到这个值就返回 -1

注意: findIndex函数只能返回第一个符合条件的值的索引。

 const arr = [1,2,3,4,3,5,6,7,8,9];
 ​
 const result = arr.findIndex(item => {
     return item === 3;
 })
 console.log(result);

当然在数组中有很多的方法去查找某个值是否存在,如:filter、some、every等;还有jQuery中的inArray方法也可有查找数组中的某个值。