
要在JavaScript中检查一个数组是否包含某个元素,可以使用 数组includes() 方法。数组includes() 是一个内置的JavaScript函数,用于检查一个数组是否包含一个指定的元素。在JavaScript中没有内置的**数组包含()**函数。
要检查一个数组是否包含特定的项目,请使用数组includes()函数。 如果一个数组包含一个元素,JavaScript includes()方法返回true。否则,它返回false。
JavaScript的includes()方法限制了一个数组在其条目中是否包含一个特定的元素,根据情况返回真或假。
语法
array.includes(element, start)
参数
元素 是必要参数,它是要搜索的元素。
start 是一个可选的参数,默认值是0,在数组的哪个位置开始搜索。
返回值
includes() 方法返回布尔值。
JavaScript中数组包含的例子
请看下面的代码。
// app.js
let dark = ['Jonas', 'Martha', 'Mikkel', 'Ulrich', 'Adam', 'Eva']
console.log(dark.includes('Adam'))
输出
true
这意味着亚当在暗 数组中是存在的,而且是在那里。现在,让我们看看在数组中不存在该项目的情况。
// app.js
let dark = ['Jonas', 'Martha', 'Mikkel', 'Ulrich', 'Adam', 'Eva']
console.log(dark.includes('Claudia'))
输出
false
传递第二个参数
如果开始参数大于或等于数组的长度,就会返回false。数组将不会被搜索到。
// app.js
let dark = ['Jonas', 'Martha', 'Mikkel', 'Ulrich', 'Adam', 'Eva']
console.log(dark.includes('Jonas', 6))
输出
false
在这段代码中,解释器将从索引6开始搜索Jonas,而这个索引在数组中是不存在的,这就是为什么它返回false。
只有当你提供起始位置时,它才会计算,然后如果它找到那个元素,就会返回true。
不传递参数
如果你没有向includes()函数 传递任何参数 , 它将返回false。
// app.js
let dark = ['Jonas', 'Martha', 'Mikkel', 'Ulrich', 'Adam', 'Eva']
console.log(dark.includes())
输出
false
我们没有传递任何参数,所以它不能理解我们要找的是哪一个项目,所以它将返回true。
Javascript数组包含一个对象
没有内置的方法来检查Javascript数组是否包含一个属性与给定值相同的对象。因此,我们必须编写我们的逻辑来检查一个包含对象的数组。
例子
// app.js
let dark = [
{
name: 'Jonas',
friend: 'Martha'
},
{
name: 'Mikkel',
friend: 'Jonas'
},
{
name: 'Ulrich',
friend: 'Katerina'
}
]
let found = false;
for (let i = 0; i < dark.length; i++) {
if (dark[i].name == 'Ulrich') {
found = true;
break;
}
}
console.log(found)
输出
true
在这个例子中,我们定义了一个包含三个对象的数组。首先,我们通过比较一个数组的值来检查它是否包含一个特定的对象。
没有一个 "神奇"的方法可以在没有循环的情况下检查数组中的东西。即使你使用一些高阶函数,函数本身也会使用循环。你可以在找到你要找的东西后立即脱离循环,以减少计算时间。
使用过滤器和箭头函数检查数组是否包含对象
我们可以使用Javascript高阶函数的组合,如array.filter()和arrow函数。
// app.js
let dark = [
{
name: 'Jonas',
friend: 'Martha'
},
{
name: 'Mikkel',
friend: 'Jonas'
},
{
name: 'Ulrich',
friend: 'Katerina'
}
]
let found = false;
if (dark.filter(d => d.name === 'Ulrich').length > 0) {
found = true;
}
console.log(found)
输出
true
在这里,我们过滤掉值为Ulrich的数组,如果数组长度大于0,就意味着数组中包含该项目,我们将返回true ,否则,我们将得到false。
我们也可以使用array.some() 函数。在这种情况下,我们不需要检查空数组的条件。
// app.js
let dark = [
{
name: 'Jonas',
friend: 'Martha'
},
{
name: 'Mikkel',
friend: 'Jonas'
},
{
name: 'Ulrich',
friend: 'Katerina'
}
]
let found = false;
if (dark.some(d => d.name === 'Ulrich')) {
found = true;
}
console.log(found)
输出
true
它将给我们同样的输出。如果数组包含一个对象,那么它将返回真,否则返回假。
Javascript数组包含一个字符串
要检查Javascript是否包含一个字符串,可以使用所有数组都有的数组indexOf()函数(Internet Explorer 8及以下版本除外),它将返回数组中该元素的索引,如果不在数组中,则返回-1。
JavaScript数组indexOf()方法在数组中搜索指定元素并返回其位置。
搜索将从特定的位置开始,如果没有确定起始位置,则从起始位置开始,在数组的末端结束搜索。如果没有找到该元素,则返回-1。
// app.js
let dark = [
'Jonas',
'Mikkel',
'Ulrich',
]
let found = false;
if (dark.indexOf('Jonas') > -1) {
found = true;
}
console.log(found);
输出
true
在我们的例子中,Jonas被包含在我们的数组中,所以它返回true。
Javascript数组包含另一个数组
要在Javascript中检查数组是否包含一个数组,可以使用array some()和array includes()函数。array some()方法根据一个测试方法检查每个元素,如果有任何数组项通过了测试函数,则返回真。否则,它将返回false。
indexOf()>=0和includes()如果给定的参数在数组中存在,都会返回true。
// app.js
let dark = [
'Jonas',
'Mikkel',
'Ulrich',
]
let dark2 = [
'Claudia',
'Noah',
'Jonas'
]
const found = dark.some(r => dark2.includes(r))
console.log(found);
输出
true
这里,我们使用了两个函数的组合。
- array.some()
- array.includes()
它将比较dark数组和dark2数组中的每一个元素,如果发现有一个元素是共同的,它将返回true,如果两个数组不同,它将返回false。
我们的例子,Jonas 在两个数组中都找到了,这就是为什么它返回true。 让我们来看看其他的情况。
// app.js
let dark = [
'Jonas',
'Mikkel',
'Ulrich',
]
let dark2 = [
'Claudia',
'Noah',
'Adam'
]
const found = dark.some(r => dark2.includes(r))
console.log(found);
输出
false
你可以看到,两个数组的元素都不一样,所以它返回false。
JavaScript数组包含与包括
JavaScript Array.prototype.includes返回一个布尔值。
JavaScript Array.prototype.indexOf返回一个数字。
没有**Array.prototype.contains()**方法,而是原生的Javascript;我们使用数组includes()方法来检查数组是否包含一个特定元素。
Array.indexOf()和String.indexOf()在不匹配时返回-1,匹配时返回索引/偏移。
String.includes()和Array.includes()返回布尔值true或false。
这就是如何检查一个数组是否包含特定元素的教程。