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

7c6233eaa2cb81894c494ff249ffded8.png

英文 | 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 condition
let ltZero = [].every(e => e < 0); // any condition


console.log('gtZero:', gtZero);
console.log('ltZero:', ltZero);

输出:

 
 
gtZero: true
ltZero: true

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

学习更多技能

请点击下方公众号

05d29af9080fa000be7f8b6c0bfdb440.gif

8b93dbf89e92741c379a3e81bc2f5a99.png

04bfb327e34bc6d697691c67de630f74.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值