分别举例说明ES5数组方法 indexOf、forEach、map、every、some、filter、reduce的用法
1. indexOf 和 lastIndexOf
indexOf函数从前到后查找元素出现的第一个位置;lastIndexOf函数从后前查找元素出现的第一个位置
var a = [1,2,3,3,2,1]
console.log(a.indexOf(2)) //1
console.log(a.lastIndexOf(2)) //4
2. forEach遍历数组
var a = new Array(1,2,3,4,5,6);
a.forEach(function(e,i,array){
array[i]= e + 1;
});
console.log(a); //[2, 3, 4, 5, 6, 7]
3. map
与forEach类似,遍历数组,返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变
var a = [1, 2, 3, 4, 5, 6]
console.log(a.map(function(e){
return e * e
})) // [1, 4, 9, 16, 25, 36]
console.log(a) //[1, 2, 3, 4, 5, 6]
4. every
是所有函数的每个回调函数都返回true的时候才会返回true,当遇到false的时候终止执行,返回false
var a = [1, 2, 3, 4, 5, 6];
console.log(a.every(function(e, i, arr){
return e < 5
}))
执行到元素5时就返回false,不再比较元素6
5. some
是“存在”有一个回调函数返回true的时候终止执行并返回true,否则返回false
var a = [1, 2, 3, 4, 5, 6]
console.log(a.some(function(e,i,arr){
return e > 2
}))
执行到元素3时就返回true,后续不再执行
6. filter
返回数组的一个子集,是一个新的数组,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加;新数组只包含返回true的值,索引缺失的不包括,原数组保持不变
var a = [1, 2, 3, 4, 5, 6]
var x = a.filter(function(e){
return e % 2 == 0;
});
console.log(x) // [2, 4, 6]
console.log(a) //[1, 2, 3, 4, 5, 6]
7. reduce
.reduce(function(v1, v2), value) / .reduceRight(function(v1, v2), value)
遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向;
方法有两个参数:1.回调函数:把两个值合为一个,返回结果; 2.value,一个初始值,可填可不填
var a = [1, 2, 3, 4, 5, 6]
var b = a.reduce(function(v1, v2){ return v1 + v2 })
console.log(a) // 21
var a1 = [1,2,3]
var b = a1.reduceRight(function(v1, v2){ return v1 - v2 }, 100)
console.log(b) // 94
网友评论