在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()方法。選擇不同的方法往往是根據個人偏好和具體的需求來定,我們可以根據自己的使用場景選擇最符合實際的方法。
原創文章,作者:GPLVS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/370249.html