js 中检查数组是否包含值的 5 种方法
在 JavaScript 中,有多种方法可以检查数组是否包含项目。您始终可以使用for 循环或
Array.indexOf()
方法,但 ES6 添加了许多更有用的方法来搜索数组并轻松找到您要查找的内容。
Arrya.includes() 方法
检查数组值的最简单方法是使用include()
方法,如下所示:
let animals = ['🍎', '🍋', '🍊', '🍇', '🍍', '🍐']
animals.includes("?") // true
animals.includes("?") // false
该函数返回一个布尔值,表示该值是否存在。
Arrya.indexOf() 方法
在需要查找的元素的确切位置的情况下,可以使用indexOf(elem)
方法,该方法在指定的数组中查找elem
并返回其第一次出现的索引,如果数组不包含elem
则返回-1
。
例如,我们可以在包含 grade
的数组中查找第一次出现的 grade
:
let grades = ["B", "D", "C", "A"]
grades.indexOf("A") // 3
grades.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()
函数可帮助我们根据对象的内容搜索对象的存在。