首页 文章详情

【JavaScript 教程】第六章 数组09— some() :检查数组中是否至少有一个元素通过了测试

web前端开发 | 175 2022-01-14 17:34 0 0 0
UniSMS (合一短信)

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

译文 | 杨小爱


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

JavaScript Array some()方法介绍

有时,您想检查数组是否至少有一个满足指定条件的元素。

例如,要检查以下数组是否至少有一个小于 5 的元素:

let marks = [ 4, 5, 7, 9, 10, 3 ];

您通常使用 for 循环,如下所示:

let marks = [ 4, 5, 7, 9, 10, 3 ];
let lessThanFive = false;
for (let index = 0; index < marks.length; index++) { if (marks[index] < 5) { lessThanFive = true; break; }}
console.log(lessThanFive);

输出:

true

它们是怎么运行的:

  • 首先,声明一个标志变量 lessThanFive 并将其值设置为 false。

  • 其次,迭代元素。如果元素小于 5,则将该标志设置为 true 并使用 break 语句立即退出循环。

该代码按预期工作。但是,它非常冗长。

Array 类型为您提供了一个名为 some() 的实例方法,它允许您测试一个数组是否至少有一个满足条件的元素。

let marks = [ 4, 5, 7, 9, 10, 3 ];
lessThanFive = marks.some(function(e) { return e < 5;});
console.log(lessThanFive);

输出

true

条件是通过传递给 some() 方法的回调函数来实现的。

现在,代码更短了。为了使其更具表现力,可以使用 ES6 中的箭头函数语法:

let marks = [ 4, 5, 7, 9, 10, 3 ];
let lessThanFive = marks.some(e => e < 5);
console.log(lessThanFive);

JavaScript 数组some()语法

下面说明了 some() 方法的语法:

arrayObject.some(callback[, thisArg]);

some()方法接受两个参数:

1) 回调参数

some() 函数对数组中的每个元素执行一次回调函数,直到找到回调函数返回 true 的元素。some() 方法立即返回 true 并且不评估剩余的元素。

如果没有元素导致 callback() 返回 true,则 some() 方法返回 false。

回调函数接受三个参数:

function callback(currentElement [[, currentIndex], array]){ // ...}
  • currentElement 是数组中正在处理的当前元素。

  • currentIndex 是数组中正在处理的当前元素的索引。

  • 该数组是调用 some() 的数组。

2) thisArg 参数

thisArg 参数是可选的。如果将 thisArg 传递给方法,则可以在回调函数中使用 thisArg 作为 this 值。

JavaScript 数组 some() 示例

让我们再举一些使用 some() 方法的例子。

1) 检查数组中是否存在元素

以下exists() 函数使用some() 方法检查数组中是否存在值:

function exists(value, array) {    return array.some(e => e === value);}
let marks = [4, 5, 7, 9, 10, 2];
console.log(exists(4, marks));console.log(exists(11, marks));

输出:

truefalse

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

以下示例显示如何检查标记数组中的任何数字是否在 (8, 10) 范围内:

let marks = [4, 5, 7, 9, 10, 2];
const range = { min: 8, max: 10};
let result = marks.some(function (e) { return e >= this.min && e <= this.max;}, range);
console.log(result);

输出:

true

它们是怎么运行的。

  • 首先,定义一个具有 min 和 max 属性的范围对象。

  • 其次,调用标记数组对象上的 some() 方法并传递回调和范围对象。因为我们将范围对象作为第二个参数 (thisArg) 传递,所以我们可以通过 this 值在回调中引用它。

请注意,如果在本示例中使用箭头函数,则回调函数中的 this 值不会绑定到范围对象,而是绑定到全局对象。

注意:空数组

如果对空数组调用 some() 方法,则无论何种条件,结果始终为 false。例如:

let result = [].some(e => e > 0);console.log(result);
result = [].some(e => e <= 0);console.log(result);

输出:

falsefalse

总结

在本教程中,我们学习了如何使用 JavaScript Array some() 方法来测试数组是否至少有一个满足条件的元素。

今天的内容就到这里了。

如果您还想学习更多关于数组的内容,请点击下文链接进行学习。

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

【JavaScript 教程】第六章 数组07— index() :在数组中定位一个元素

【JavaScript 教程】第六章 数组06— slice() :复制数组元素

【JavaScript 教程】第六章 数组05— splice():删除、插入和替换

【JavaScript 教程】第六章 数组04— JavaScript 队列

【JavaScript 教程】第六章 数组03— Stack :使用 Array 的push()和pop()方法实现堆栈数据结构

【JavaScript 教程】第六章 数组02— Array Length:如何有效地使用数组的长度属性

【JavaScript 教程】第六章 数组01— 介绍JavaScript中的Array类型


学习更多技能

请点击下方公众号

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter