一、基础判断方法
JS数组是否包含某个元素,最基础的判断方法是通过for循环遍历数组中的每一个元素,依次判断是否等于目标元素:
const arr = [1, 2, 3, 4, 5];
const target = 3;
let contains = false;
for(let i = 0; i < arr.length; i++) {
if(arr[i] === target) {
contains = true;
break;
}
}
console.log(contains); // true
基本思路就是设置一个标志位contains,如果数组中有元素等于目标元素,则将标志位赋值为true,否则为false。在循环中加入break是为了提高效率,避免遍历整个数组。
二、ES6新方法includes()
ES6中新增了一个数组方法includes(),用于判断一个数组是否包含某个元素,其用法非常简单明了:
const arr = [1, 2, 3, 4, 5];
const target = 3;
const contains = arr.includes(target);
console.log(contains); // true
includes()方法返回一个布尔值,表示数组是否包含目标元素。该方法实现了上述基础判断方法,但代码简洁清晰,更易读懂。
三、ES6新方法find()
ES6中新增了另一个数组方法find(),用于找出第一个满足条件的数组成员,其用法如下:
const arr = [1, 2, 3, 4, 5];
const target = 3;
const contains = arr.find(item => item === target);
console.log(contains); // 3
find()方法的参数是一个回调函数,该函数接收三个参数:当前值,当前索引和原数组。在本例中,回调函数使用箭头函数简写,判断条件为当前值是否等于目标元素。如果找到满足条件的元素,返回该元素;否则返回undefined。由于find()方法只查找第一个满足条件的元素,因此与原数组长度无关,效率比for循环高。
四、ES6新方法some()
ES6中还新增了一个数组方法some(),用于检测数组中是否存在满足条件的元素,其用法如下:
const arr = [1, 2, 3, 4, 5];
const target = 3;
const contains = arr.some(item => item === target);
console.log(contains); // true
some()方法的参数也是一个回调函数,该函数同样接收三个参数:当前值,当前索引和原数组。在本例中,回调函数同样是使用箭头函数简写,判断条件为当前值是否等于目标元素。some()方法返回一个布尔值,表示是否至少有一个数组元素满足条件。该方法只要找到一个符合条件的元素就会立即停止遍历,因此效率比for循环高。
五、lodash的方法
lodash是一款非常流行的JavaScript工具库,其中包含了丰富的数组、字符串、函数等常用方法。lodash中也提供了判断一个数组是否包含某个元素的方法,用法非常简单:
const _ = require('lodash');
const arr = [1, 2, 3, 4, 5];
const target = 3;
const contains = _.includes(arr, target);
console.log(contains); // true
通过const _ = require('lodash')引入lodash库后,就可以直接使用其中的includes()方法来判断一个数组是否包含某个元素了。lodash中提供的方法往往是经过高度优化和封装的,使用起来非常简单方便。