跳到主要内容

JavaScript 数组的 some() 方法详解

some() 方法测试数组中的任何元素是否通过给定的测试函数。

示例

// 一个测试函数:返回偶数
function isEven(element) {
return element % 2 === 0;
}

// 定义一个数组
let numbers = [1, 3, 2, 5, 4];

// 检查 numbers 数组是否至少包含一个偶数
console.log(numbers.some(isEven));

// 输出:true

some() 语法

some() 方法的语法为:

arr.some(callback(currentValue), thisArg);

这里,arr 是一个数组。

some() 参数

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

  • callback - 对每个数组元素执行的测试函数。它接受:

  • currentValue - 数组中传递的当前元素。

thisArg(可选)- 执行回调时使用的 this 的值。默认为 undefined

some() 返回值

  • 如果数组元素通过给定的测试函数(callback 返回真值),则返回 true
  • 否则,返回 false

注释some() 方法不会:

  • 改变原始数组。
  • 对没有值的数组元素执行 callback

示例 1:使用 some() 方法

// 一个测试函数:返回小于 18 岁的年龄
function checkMinor(age) {
return age < 18;
}

const ageArray = [34, 23, 20, 26, 12];

// 检查 ageArray 是否包含任何小于 18 的元素
let check = ageArray.some(checkMinor);

console.log(check);

输出

true

在上面的示例中,我们使用 some() 方法来找出 ageArray 数组中是否有任何元素的值小于 18

首先,我们创建了回调函数 checkMinor(),返回小于 18 岁的年龄。

然后我们将回调传递给 some() 方法,作为 ageArray.some(checkMinor),它检查小于 18 的元素并返回 true

示例 2:使用 some() 方法检查学生的成绩

// 学生获得的成绩数组
let scoreObtained = [45, 50, 39, 78, 65, 20];

// 一个测试函数:返回小于 40 分的成绩
function studentIsPassed(score) {
return score < 40;
}

// 检查是否至少有一名学生的成绩小于 40 分
if (scoreObtained.some(studentIsPassed) == true) {
console.log("至少有一名学生未通过。");
} else console.log("所有学生都通过了。");

输出

至少有一名学生未通过。

在上面的示例中,我们使用 some() 方法来找出是否有任何学生的成绩低于 40 分。

我们将回调传递给方法,作为 scoreObtained.some(studentIsPassed),它返回 true,因为 scoreObtained 至少包含一个元素,即 20,低于 40 分。

由于 if 语句中的测试表达式为真,程序打印出“至少有一名学生未通过。”

推荐阅读: JavaScript 数组 every()