在Js语言中,我们常常需要从一个数组中查找指定的值是否存在。这种需求在开发中非常常见,因此本文将从多个方面详细讨论如何用Js判断数组中是否存在某值。
一、For循环遍历
最常见的方法是使用For循环遍历数组,逐个比较数组元素和指定值是否相等,如果相等则返回true否则返回false。
function isInArray(arr, value) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] === value) {
return true;
}
}
return false;
}
以上代码中的isInArray()函数为判断函数名称,该函数需要传入两个参数:arr为需要判断的数组,value为需要查找的值。该函数首先使用For循环遍历数组,逐一和指定值比较,如果找到,直接返回true;若循环结束,还没找到,则返回false,表示指定值不存在于数组中。
二、Array.includes()
ES7中新增了Array.prototype.includes()方法,可以简化判断数组中是否存在某项的代码,返回值为布尔值。
var arr = [1, 2, 3];
var value = 2;
arr.includes(value); // true
以上代码判断数组arr中是否存在值2,使用includes()方法返回true。
三、Array.findIndex()
ES6中新增了Array.prototype.findIndex()方法,返回数组中符合条件的某个元素在数组中的索引值,如果数组中没有符合条件的元素,则返回-1。
var arr = ['apple', 'banana', 'orange'];
var index = arr.findIndex(function(element) {
return element === 'banana';
});
console.log(index); // 1
以上代码使用findIndex()方法在数组中查找值为'banana'的元素,findIndex()方法的回调函数返回值为true时,findIndex()方法返回此时的索引值。
四、Array.some()
Array.prototype.some()方法测试数组中是否至少有一个元素通过由提供的函数实现的测试,返回值为布尔值。与findIndex()方法不同,some()返回的是布尔值,而不是元素的位置索引。
var arr = [2, 3, 4, 5];
var isSome = arr.some(function(element) {
return element > 3;
});
console.log(isSome); // true
以上代码中使用some()方法查找数组中是否有元素大于3,some()方法返回布尔值true。
五、Array.filter()
Array.prototype.filter()方法创建一个新数组,其中包含所有通过所提供函数筛选的元素。
var arr = [1, 2, 3, 4, 5];
var filteredArr = arr.filter(function(element) {
return element % 2 === 0;
});
console.log(filteredArr); // [2, 4]
以上代码中使用filter()方法筛选数组中的所有偶数元素,返回一个新数组[2, 4]。
六、Array.lastIndexOf()
Array.prototype.lastIndexOf()方法返回指定元素最后一个匹配项在数组中的索引值,如果没有找到则返回-1。
var arr = [1, 2, 3, 4, 5, 2];
var lastIndex = arr.lastIndexOf(2);
console.log(lastIndex); // 5
以上代码中使用lastIndexOf()方法查找元素2在数组中的最后一次出现的位置,返回索引值5。
总结
本文从For循环遍历开始介绍了多个方法判断数组中是否存在指定元素,包括ES7新增的Array.prototype.includes()方法、ES6新增的Array.prototype.findIndex()和Array.prototype.some()方法,以及Array.prototype.filter()和Array.prototype.lastIndexOf()方法。选择不同的方法往往是根据个人偏好和具体的需求来定,我们可以根据自己的使用场景选择最符合实际的方法。