【JavaScript 教程】第六章 数组08— every() :检查数组中的每个元素是否都通过了测试

共 2954字,需浏览 6分钟

 ·

2022-01-14 17:36

英文 | https://www.javascripttutorial.net/

译文 | 杨小爱


在上节,我们学习如何使用 JavaScript 数组 indexOf() 和 lastIndexOf() 方法来查找数组中元素的位置,错过的小伙伴可以点击文章《 【JavaScript 教程】第六章 数组07— index() :在数组中定位一个元素》进行学习。
那么,在今天的教程中,我们一起来学习如何使用 JavaScript Array every() 方法检查所有数组元素是否通过测试。

使用 for 循环检查数组元素

有时,您需要测试数组的每个元素是否满足指定条件。

通常,我们使用 for 循环迭代所有元素并根据条件检查每个单独的元素。假设您有一个包含三个元素的数组 numbers:

let numbers = [1, 3, 5];

以下代码检查 numbers 数组中的每个元素是否大于零:

let numbers = [1, 3, 5];let result = true;for (let i = 0; i < numbers.length; i++) {    if (numbers[i] <= 0) {        result = false;        break;    }}console.log(result);

输出:

true

程序怎么运行:

首先,将结果变量初始化为 true。

其次,遍历 numbers 数组的元素并检查每个元素是否小于或等于零。如果是这种情况,请将结果变量设置为 false 并使用 break 语句立即终止循环。如果没有元素小于或等于零,则结果变量的值保持为true。

这段代码简单直接。但是,它非常冗长。

JavaScript Array 类型提供了 every() 方法,该方法允许您以更短、更简洁的方式检查数组的每个元素是否通过测试。

JavaScript Array every() 方法简介

从 ES5 开始,JavaScript Array 类型提供了一个方法 every() 来测试数组中的每个元素。

以下示例使用 every() 检查 numbers 数组的每个元素是否大于零:

let numbers = [1, 3, 5];let result = numbers.every(function (e) {    return e > 0;});
console.log(result);

输出:

true

通过使用ES6 箭头函数,代码可以更短:

let numbers = [1, 3, 5];
let result = numbers.every( e => e > 0);
console.log(result);

它也干净多了,不是吗?

下面说明了every()方法的语法。

arrayObject.every(callback[, thisArg])

every() 方法接受两个命名参数:callback 和 thisArg。

1) 回调参数

回调是一个测试数组每个元素的函数。callback() 函数具有以下形式:

function callback(currentElement, index, array){   //...}

callback() 函数接受三个参数:

首先,currentElement 是正在处理的当前元素。

其次,索引是currentElement的索引。

第三,数组是调用 every() 方法的数组。

currentElement 参数是必需的,而索引和数组参数是可选的。

2) thisArg 参数

every() 方法的 thisArg 参数是可选的。如果将 thisArg 参数传递给方法,回调函数中的 this 值将引用 thisArg 参数。

如果回调函数为每个数组元素返回一个真值,every() 方法返回 true;否则,它返回 false。

请注意,every() 方法对数组中的每个元素执行 callback() 函数,直到找到导致 callback() 返回错误值的元素。

换句话说,every() 将停止调用 callback() 函数,并在存在导致 callback() 返回错误值的数组元素时返回 false。

让我们看一下使用 every() 方法的更多示例。

更多 JavaScript Array every() 方法示例

下面的例子测试是否所有的数组元素都是偶数

let numbers = [1, 3, 5];let isEven = numbers.every(function (e) {    return e % 2 == 0;});
console.log(isEven);

输出:

false

相反,以下示例测试是否所有数组元素都是奇数。

let numbers = [1, 3, 5];
let isOdd = numbers.every(function (e) { return Math.abs(e % 2) == 1;});
console.log(isOdd);

输出:

true

假设您有一个具有两个属性的对象:min和max:

let range = {    min: 0,    mas: 10};

下面的示例测试 numbers 数组中的所有元素是否在 range 对象的 min 和 max 指定的范围内。

let numbers = [1, 3, 5];
let range = { min: 0, max: 10};
let isInRange = numbers.every(function (e) { return e >= this.min && e <= this.max;}, range);

输出:

true

在这个例子中,我们将 range 对象作为第二个参数传递给 every() 方法。在 callback() 函数中,我们使用 this 关键字引用范围对象。

注意:空数组

如果在空数组上调用 every() 方法,该方法将始终在任何条件下返回 true。例如:

let gtZero = [].every(e => e > 0); // any conditionlet ltZero = [].every(e => e < 0); // any condition
console.log('gtZero:', gtZero);console.log('ltZero:', ltZero);

输出:

gtZero: trueltZero: true

在本教程中,我们学习了如何使用 JavaScript Array every() 方法来测试数组中的所有元素是否都通过了测试函数提供的测试。


学习更多技能

请点击下方公众号

浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐