如何在JavaScript中检查数组元素

105 阅读4分钟

Javascript数组some()函数测试数组中的某些项是否通过了所提供函数的测试。some()方法是ECMA-262标准的JavaScript扩展,因此,它可能不存在于该标准的其他实现中。

JavaScript数组.some()

JavaScript数组some()是一个内置的方法,用于检查数组中是否至少有一个项目通过了所提供函数的测试。它返回布尔值。

JavaScript中的some()方法对数组中的每个元素执行一次函数:

  1. 如果它发现一个数组元素的函数返回真值,那么some()函数就会返回真值(并且它不会检查其余的值)
  2. 否则,它将返回false

要在JavaScript中检查一个数组元素,请使用array.some()函数。

语法

array.some(function(currentValue, index, arr), thisValue)

参数

JavaScript的some()函数将第一个参数作为一个函数,该函数需要以下参数:

  1. currentValue。是必须的。当前元素的值
  2. index。是可选的。当前元素的数组索引
  3. arr: 可选。当前元素所属的数组对象

函数是必要的参数。

它把thisValue 作为第二个参数,这个参数是可选的。它是要传递给函数的值,作为它的 "this"值。如果thisValue参数为空,值 "undefined"将被作为其 "this"值。

返回值

如果回调函数为数组中的至少一个元素返回一个真实的值,Javascript some()方法返回true。否则,它将返回false

例子

在新文件中写下以下代码。让我们把它称为app.js 文件:

// app.js

let dark = [
  100,
  90,
  80,
];

console.log(dark.some(x => x > 90));

输出

true

在这个例子中,我们定义了一个数组,然后检查该数组是否包含满足条件的单项,如果包含,则返回true ,否则返回false。

some()函数对数组中的每个项目都执行一次回调函数,直到找到回调函数返回真值的项目(转换为布尔值后成为真值)。

如果找到了这样的项目,some()方法立即返回true。否则,它将返回false

该回调只对数组中具有分配值的索引进行调用。对于已经被删除或从未被赋值的索引,它不会被调用。

调用回调时有三个参数:

  1. 项的值
  2. 该项的索引
  3. 正在被遍历的数组对象

如果thisArg参数被提供给some()函数,它将被用作回调的this值。否则,未定义的值将被用作这个值。

最终可被回调观察到的这个值是根据确定一个函数所看到的这个值的通常规则来定义的。

some()函数不会改变它所调用的数组。

some()方法处理的元素范围是在第一次调用回调之前设置的。

回调不会访问在调用some()开始后追加到数组中的项目。

如果数组中现有的、未被访问的项被回调改变,其传递给访问回调的值将是some()访问该项索引时的值。被删除的项不会被访问。

检查值是否存在于一个数组中

使用数组来检查指定的值是否存在于array.some()函数中。让我们看看如何做到这一点:

// app.js

const horcruxes = ['diary', 'ring', 'locket', 'nagini', 'harry'];

function remainingHorcruxes(arr, val) {
  return arr.some(function (arrVal) {
    return val === arrVal;
  });
}

console.log(remainingHorcruxes(horcruxes, 'harry'));
console.log(remainingHorcruxes(horcruxes, 'diadem'));

输出

true
false

在这个例子中,我们定义了一个数组,然后定义了一个函数来检查通过的值是否存在于给定的数组中。如果它存在,那么它将返回 ,否则返回假。

检查一个数组是否有一个元素在范围内

要检查数组中的任何数字是否在范围内,使用array.some()方法:

// app.js

let data = [11, 18, 19, 21, 29];

const range = {
  min: 10,
  max: 30
};

let result = data.some(function (e) {
  return e >= this.min && e <= this.max;
}, range);

console.log(result);

输出

true

在这个例子中,我们根据最小和最大数字来检查每个元素。如果它满足条件,则返回true ,否则返回false。

首先,我们定义了一个带有min和max属性的range对象。

其次,在mark数组对象上调用some()函数并传递回调和范围对象。因为我们传递了一个范围对象作为第二个参数(thisArg),我们可以通过这个值在回调中引用它。

支持的浏览器

JavaScript数组some()方法支持的浏览器列举如下:

  1. 谷歌浏览器
  2. 火狐浏览器
  3. Internet Explorer
  4. 浏览器
  5. Safari

这就是Javascript数组some()方法的内容。

请参见

JavaScript数组includes()

JavaScript数组indexOf()

JavaScript数组包含

JavaScript数组find()

JavaScript数组findIndex()