数组的实例回调方法
以下数组操作方法接收同样的参数
ArrayObject.CALLBACK(function(currentValue, index, thisArr), thisValue);
- 都可以通过改变thisArr改变原数组
1.filter() 过滤
返回true,则原样返回的元素
- 参数为回调函数
- 不改变原数组
- 返回新数组
filter() 方法返回数组中满足条件的元素组成的新数组,原数组不变
var a = [1,2,3,4,11]
// 第一个参数为一个方法,有三个参数,current:当前值 index:当前值下标 array:这个数组对象
var b = a.filter(function(current,index,array){
return current < 10 //返回true或false
})
console.log(b) // [1,2,3,4]
console.log(a) // [1,2,3,4,11]
2.map() 格式化数组
将元素格式化后返回
- 参数为回调函数
- 不改变原数组
- 返回新数组
map() 方法来根据需求格式化原数组,返回格式化后的数组。原数组不变
var a = [1,2,3,4,5]
// 参数同filter方法
var b = a.map(function(current,index,array){
return current + 1 //返回格式化后的元素
})
console.log(b) // [2,3,4,5,6]
console.log(a) // [1,2,3,4,5]
3.every()
一假即返回假
- 参数为回调函数
- 不改变原数组
- 返回true或false
对数组的每一项都运行给定的函数,若每一项都返回 ture,则返回 true
var a = [1,2,3,4,5]
var b = a.every(function(current,index,array){
return current < 6
})
var c = a.every(function(current,index,array){
return current < 3
})
console.log(b) // true
console.log(c) // false
4.some()
一真即返回真
- 参数为回调函数
- 不改变原数组
- 返回true或false
对数组的每一项都运行给定的函数,若存在一项符合返回true, 全部不符合返回false
var a = [1,2,3,4,5]
var b = a.some(function(current,index,array){
return current > 4
})
var c = a.some(function(current,index,array){
return current > 5
})
console.log(b) // true
console.log(c) // false
5.forEach() 数组遍历
- 参数为回调函数
- 不改变原数组
- 返回true或false
- 遍历整个数组,中途不能break或return
var arr = ['a','b','c'] var copy = [] arr.forEach(function(item){ copy.push(item); }) console.log(copy)
6.find()
- 参数为回调函数
- 不改变原数组
- 返回 undefined 或 符合条件的元素
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 undefined。 注意: find() 对于空数组,函数是不会执行的。 注意: find() 并没有改变数组的原始值。
var arr = ['a','b','c'];
var res = arr.find(function(item){
return item=='b';
});
console.log(res);// b
7.findIndex()
- 参数为回调函数
- 不改变原数组
- 返回 -1 或 符合条件的元素索引值
当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。如果没有符合条件的元素返回 -1 注意: findIndex() 对于空数组,函数是不会执行的。 注意: find() 并没有改变数组的原始值。
var arr = ['a','b','c'];
var res = arr.findIndex(function(item){
return item=='b';
});
console.log(res);// 1
8.reduce()
实现上一元素与当前元素的计算
var arr = [1,2,3,4,5,6,7,8,9,10]
var res = arr.reduce(function(prev,current,index,array){
return prev + current ;
})
console.log(res) // 55;