every(),some(),filter(),map()都是Array对象的方法
语法: array.every(function(value,index,arr),thisValue)
它们都有两个参数
-
每一项上运行的函数,必填
function(value,index,arr)
value表示当前元素的值,必填 index表示当前元素的索引,选填 arr表示当前元素所属于的数组对象,也就是使用该数组的方法
-
运行该函数的作用域对象,选填
thisValue
该对象作为回调函数时使用,用来传递给函数
every() some() filter() map()都不会改变原数组
接下来是对它们分别举例子
1. every()
返回一个Boolean,用于判断数组中每个元素是否符合function的条件。
只要有一个元素不满足条件,返回false,不会继续检查剩余的元素;
只有当所有元素都满足条件时,返回true。
var arr = [1,2,3,4,5];
var result = arr.every(function(value){
return value > 3;
});
var result2 = arr.every(function(value){
return value > 0;
});
console.log(result); //false 因为arr中并非所有元素都大于3
console.log(result2); //true 因为arr中的所有元素都大于0
2. some()
返回一个Boolean,用于判断数组中是否有满足function中条件的元素。
只要有一个元素满足条件,直接返回true,不会继续检查剩余的元素;
只有当所有元素都不满足条件时,返回false。
var arr = [1,2,3,4,5];
var result = arr.some(function(value){
return value > 4;
});
var result2 = arr.some(function(value){
return value > 6;
});
console.log(result); //true arr中含有大于4的元素
console.log(result2); //false arr中没有大于6的元素
3. filter()
返回一个数组,数组中包含所有满足function中条件的元素,如果没有满足条件的元素,则返回一个空数组。
var arr = [1,2,3,4,5];
var result = arr.filter(function(value){
return value > 2;
});
var result2 = arr.filter(function(value){
return value > 6;
});
console.log(result); //[3,4,5] arr中大于2的元素为 3,4,5
console.log(result2); // [] arr中没有大于6的元素,所以返回空数组
4. map()
返回一个新数组,数组的元素是由原数组中的每个元素调用了function函数之后产生的结果组成。
var arr = [1,2,3,4,5];
var result = arr.map(function(value){
return value*2;
});
console.log(result); //[2,4,6,8,10] arr中的每个元素乘2后组成新的数组
它们的区别可以从英文意思上去记忆,every是每一个的意思,所以在判断时要数组中的每一个元素都满足才返回true,否则返回false; some是一些,若干的意思,所以判断时,仅需要有一个元素满足条件即可返回true,所有元素都不满足才返回false;filter是过滤,而filter()方法差不多也算是将数组中符合条件的元素过滤出来组成一个新的数组的意思。