ES5为数组定义了5个迭代的方法。每个方法都接收两个参数:
1)要在每一项上运行的函数
2)运行该函数的作用域对象--影响this的值(可选)。
运行的函数会接受三个参数:1)数组项的值 2)该项在数组中的位置 3)数组对象本身。
1、.every()
对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。类似于逻辑与,所有都满足的条件的情况下返回true:
var arr = [1,5,9,7,25,16,30]
var result = arr.every(function(item,index,array){
return item > 0
})
console.log(result)
这里的条件时数组中的内容大于0,原数组中的所有内容都大于0,所以这里返回的是true;
只要有一项不满足条件则输出false:
var arr = [1,5,9,7,25,16,30]
var result = arr.every(function(item,index,array){
return item > 5
})
console.log(result)
这里条件时大于5,此数组中有小于5的项,所以返回false:
2、.some()
对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。正好和every相反,与逻辑或的方法相近,数组中有满足条件的内容时返回true:
var arr = [1,5,9,7,25,16,30]
var result = arr.some(function(item,index,array){
return item > 5
})
console.log(result)
这里条件时内容大于5,原数组中存在大于5的项,所以输出true:
当全都不满足条件时输出false:
var arr = [1,5,9,7,25,16,30]
var result = arr.some(function(item,index,array){
return item < 0;
})
console.log(result)
这里的条件是小于0,原数组中所有项都不小于0,所以输出false
3、.filter()
对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
挑选出符合条件的项,并组成新的数组:
var arr = [1,5,9,7,40,25,16,30]
var result = arr.filter(function(item,index,array){
return item > 29;
})
console.log(result)
这里的条件时大于29,原数组里只有“40”和“30”大于29(满足所给定的条件),所以返回这两项内容组成的新数组:
4、.map()
对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。
var arr = [1,5,9,7,40,25,16,30]
var result = arr.map(function(item,index,array){
return item * 2;
})
这里给的条件是乘以二,将原数组中的每一项拿出来做乘以2的运算,并且返回运算后的新数组(不改变原数组)
console.log(result)
5、.forEach()
对数组的每一项运行给定函数。该方法没有返回值。
var arr = [1,5,9,7,40,25,16,30]
var result = arr.forEach(function(item,index,array){
return item * 2;
})
console.log(result)
这里也是给原数组的每一项做*2的运算
和map一样,只不过map可以返回运算后的新数组,.forEach()没有返回值,如果一定要返回,则只有一个返回值:undefined:
虽然没有返回值,但是它可以打印和运算:
var arr = [1,5,9,7,40,25,16,30]
var result = arr.forEach(function(item,index,array){
console.log (item * 2);
})
这里原数组内的各项做了乘以2的运算并且能够打印,结果:
小编能力有限,存在不足或不全,请大家指出,共同学习与交流。