如何检查JavaScript数组是否包含某个元素

328 阅读4分钟

JavaScript Array Contains - The Complete Guide

要在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

这里,我们使用了两个函数的组合。

  1. array.some()
  2. 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()返回布尔值truefalse

这就是如何检查一个数组是否包含特定元素的教程。