some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
var arr = [3,6,9,12];
if(arr.some(function checknumber(number){return number == 12;})) {
//代码块
}
//因为arr数组中有12的值,所以代码块会执行,而函数checknumber中传的参数number是从数组arr中读取
输出 true
现在,代码更短了。为了使其更具表现力,可以使用 ES6 中的箭头函数语法:
let marks = [ 4, 5, 7, 9, 10, 3 ];
let lessThanFive = marks.some(e => e < 5);
console.log(lessThanFive);
1) 检查数组中是否存在元素
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));
true
false
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
请注意,如果在本示例中使用箭头函数,则回调函数中的 this 值不会绑定到范围对象,而是绑定到全局对象。
空数组
如果对空数组调用 some() 方法,则无论何种条件,结果始终为 false。例如:
let result = [].some(e => e > 0);
console.log(result);
result = [].some(e => e <= 0);
console.log(result);
false
false