数组every 方法
Array.prototype.every(callback[,thisArg]);
【功能】
依次迭代数组中的元素,如果符合callback中的规则,返回true,否则返回false;
如果为false,则跳出程序,并返回false。可以通过该方法判断数组中元素是 否符合指定的规则。
every 接受两个参数,第一个是回调函数,第二个控制回调函数中this的指向;
1.callback(item,index,arr);
接受3个参数,第一个‘item’,为当前迭代的数组中的元素,‘index’为当前迭代元素的下标,‘arr’为原数组;
2.thisArg
默认callback中的this是指向window的,可以通过设置every的第二个参数,改变callback中this的指向;
3.案例
let new_arr = [1,2,6,3,4,5];
let res = new_arr.every(function(item,index,arr){
console.log(this); //window
return item<1;
});
console.log(res);//false
该案例中,数组第二个元素为2, 不符合item<1的条件,所以会返回false,并且终止运行程序,下方输出res结果为Boolean型,false。
其中只设置了every的第一个参数,没有设置第二个参数,因此第一个参数(callback会回调函数)中的this会指向window对象。
let new_arr = [1,2,6,3,4,5];
let res = new_arr.every(function(item,index,arr){
console.log(this); //new_arr
return item<10;
},new_arr);
console.log(res);//true
而这个案例中,判断的条件是item<10,数组中最大的值为6,符合条件,所有res会是Boolean型的true;
由于设置了第二个参数,因此会更改回调函数中的this指向,此时this指向new_arr;