我们经常发现自己处于检查数组是否包含 JavaScript 中的值的情况。尽管可以使用循环使用基本的 JavaScript 语法对搜索功能进行编码,但最好了解 JavaScript 中可用于数组搜索的内置功能、它们的用法、返回类型和行为。它使我们的任务更容易,因为我们需要更少的代码。通过内置功能,该功能将变得高效且不易出错。让我们看看在数组中搜索元素的方法。
1.在JavaScript 中使用.indexOf()函数检查数组是否包含值
该indexof()函数是javascript中常用的函数。它在搜索数组甚至字符串中的元素时效果很好。
句法
indexOf(element, index)
范围
它将要搜索的元素作为参数。还有一个可选参数告诉函数,必须从哪里开始搜索(从 开始0
)的索引。如果我们提供一个负值,则意味着从指定位置的数组末尾开始搜索。
返回值
0
如果可以找到该元素,则该函数返回从数组中开始的搜索元素的索引。否则,它将返回-1
,表明它找不到该元素。如果数组中有多个匹配项,则该.indexOf()
函数将返回第一个匹配项的索引。
浏览器支持.indexOf()
所有主要浏览器版本均支持该功能。
用法
indexOf()
函数在数组上的用法如下。
let fruits = ["Apple", "Mango", "Pear", "Peach"];
console.log(fruits.indexOf("Pear"));
console.log(fruits.indexOf("Tomato"))
输出:
2
-1
对于搜索功能,我们检查 的返回类型.indexOf(searchText)
是否大于-1
。如果是这样,那么搜索结果应该是true
else false
。让我们看一下上面讨论的相同示例,以检查数组中是否存在元素。
function isFruit(fruitName) {
let fruits = ["Apple", "Mango", "Pear", "Peach"];
if(fruits.indexOf(fruitName) > -1) {
return true;
} else {
return false;
}
}
isFruit("Pear");
isFruit("Cat");
输出:
true
false
2.在JavaScript 中使用.includes()函数检查数组是否包含值
JavaScript的includes()
功能检查给定元素是否存在于数组中。它返回一个布尔值。因此,它最适合if
条件检查。
句法
includes(keyword)
includes(keyword, index)
范围
该函数有两个参数。通常,我们以 形式使用此功能.includes(searchString)
。searchString
参数是我们希望搜索的元素,参数是指要搜索的index
数组索引。该index
参数是可选的
返回值
.includes()
true
如果searchString
找到 是数组的元素,则返回。如果未找到,则该函数返回 false。
浏览器支持
该.includes()
功能适用于除 Internet Explorer 之外的几乎所有网络浏览器。因此,如果您的项目在 IE 上受支持,您可能必须使用该indexOf()
功能。
用法
让我们看看在includes()
数组中应用
let fruits = ["Apple", "Mango", "Pear", "Peach"];
console.log(fruits.includes("Pear"));
console.log(fruits.includes("Tomato"))
输出:
true
false
该includes()
函数可以直接在if
条件中使用,因为它返回一个布尔值作为输出。上面的例子可以有条件地使用,if
如下所示。请注意,此代码可能无法在 IE 中运行,因为.includes()
它不受支持。
function isFruit(fruitName) {
let fruits = ["Apple", "Mango", "Pear", "Peach"];
if(fruits.includes(fruitName)) {
return true;
} else {
return false;
}
}
isFruit("Pear");
isFruit("Cat");
输出:
true
false
3.在JavaScript中使用.find()函数在数组中查找元素
检查数组中是否存在元素的另一种方法是使用.find()函数。与.indexOf()
and.includes()
函数相比,.find()
将函数作为参数并在数组的每个元素上执行它。它将返回参数函数中提到的条件满足的第一个值。
句法
.find((keyword) => { /* Some condition checks */} )
.find((keyword, index) => { /* Some condition checks */} )