本文已經原作者 Abhilash Kakumanu 授權翻譯。
簡介陣列是我們程式設計中經常使用的的資料結構之一。在處理陣列時,我們經常需要在陣列中查詢特定的值,JavaScript 包含一些內建方法來檢查陣列是否有特定的值或物件。
今天,我們來一起看看如何檢查陣列是否包含特定值或元素。
檢查陣列是否包含一個基本型別的值Arrya.includes() 方法檢查陣列值的最簡單方法是使用include()方法,如下所示:
let animals = ["", "", "", ""]animals.includes("") // trueanimals.includes("") // false
該函式返回一個布林值,表示該值是否存在。
Arrya.indexOf() 方法在需要查詢的元素的確切位置的情況下,可以使用indexOf(elem)方法,該方法在指定的陣列中查詢elem並返回其第一次出現的索引,如果陣列不包含elem則返回-1。
例如,我們可以在包含 grade 的陣列中查詢第一次出現的 grade:
let grades = ["B", "D", "C", "A"]grades.indexOf("A") // 3grades.indexOf("F") // -1
在第一個例項中,元素出現,並返回其位置,在第二個例項中,返回值表示元素不存在。
我們可以使用它來輕鬆地改變程式碼流
let grades = ["B", "D", "C", "A"]if (grades.indexOf("F") >= 0) { console.log("元素存在");} else { console.log("元素不存在");}
檢查物件陣列是否包含物件some() 方法在搜尋物件時,include()檢查提供的物件引用是否與陣列中的物件引用匹配。這不是我們想要的,因為物件可以有相同的欄位和相應的值,但引用不同。
我們可以使用some()方法根據物件的內容進行搜尋。some()方法接受一個引數,接受一個回撥函式,對陣列中的每個值執行一次,直到找到一個滿足回撥函式設定的條件的元素,並返回true。
為了更好地理解它,讓我們看看一些 some()的實際應用
let animals = [{name: "dog"}, {name: "snake"}, {name: "monkey"}, {name: "donkey"}]let element = {name: "monkey"}animals.some(animal => animal.name === element.name)
回撥函式在前兩種情況下返回 false,但在第三個情況下返回 true,因為名稱匹配。此後,some()暫停執行並返回 true。
總結在本文中,我們介紹了在JavaScript中檢查陣列是否包含指定值的幾種方法。
我們已經介紹了include()函式,它會在值存在時返回一個布林值。函式的作用是:如果值存在,則返回該值的索引;如果不存在,則返回-1。
最後,對於物件,some()函式可幫助我們根據物件的內容搜尋物件的存在。
我是小智,我要去刷碗了,我們下期再見!
原文:https://stackacabuse.com/javascript-check-if-array-contains-a-value-element/