目录
1、map()
2、find()
3、findIndex()
4、 some()
5、every()
6、reverse()
7、reduce()
8、 forEach()
9、filter( )
10、reduceRight()
map()
方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
高阶函数----函数的参数接受一个函数或返回值是函数的函数
arr.map(function( item,index, arr) {
// item -数组每一个元素
//index -数组元素的索引
// arr-----原数组
})
item -数组每一个元素
index -数组元素的索引
arr-----原数组
变异方法
map对原数组循环,每次函数返回值会放入新数组中
map不影响原数组
map 也称为映射。映射是个术语,指两个元素的集之间元素相互“对应”的关系。
map重点在于有返回值,forEach没有返回值(undefined)
const arr=[10,20,30,40]
const newArray=arr.map(function(item,index,arr){
return item*2
})
console.log(newArray)//[20, 40, 60, 80]
find( ) 查找满足条件的第一个元素, 找到就返回该元素,找不到是undefined
语法:
arr.find ( function ( item, index , arr) {
})
const arr=[1,3,7,8,4,2,9,3,6,8]
const ele=arr.find(function(item,index,arr){
return item===3
})
console.log(ele)//3
findIndex( ) 查找满足条件的第一个元素的索引,找到就返回该元素的索引,找不到是-1
indexOf( ) 只能找具体的值
arr.findIndex ( function ( item, index , arr) {
})
const arr=[22,34,66,22,6,7,9,0,6]
const index=arr.findIndex(function(item,index,arr){
return item===6
})
console.log(index)//4
some对数组进行循环,发现满足条件的第一个元素则循环结束返回true, 假如所有元素不满足返回false
//查看数组中是否含有偶数
const arr=[2,3,5,7,8,4,99]
const flag=arr.some(function(item,index,arr){
return item%2===0
})
console.log(flag)//true
every对数组进行循环,所有元素都满足返回true,假如遇到第一个不满足的元素结束,返回false
const arr=[3,6,8,9,-3,-6,9]
const flag = arr.every(function (item) {
console.log(item)
return item > -9
})
console.log(flag)//true
reverse() 对原数组进行翻转
const arr=[1,2,3,4,5,6]
console.log(arr.reverse())//[6, 5, 4, 3, 2, 1]
arr.reduce(function(prev , current) { },初始值)
记忆:指定初始值,prev第一次就指向该初始值,以后的prev是上一次函数返回值, current指 向第一个元素
没有指定初始值,prev第一次就指向数组第一个元素,current指向第二个元素,以后的 prev是上一次函数返回值
// const arr = [1, 2, 3, 4]
// const r = arr.reduce(function (prev, current, index, arr) {
// console.log(prev, current, index)
// return prev + current
// })
// console.log(r)
/*
第一次 prev指向第一个元素 current 指向第二个 元素 index是current指向的元素的下标
第二次 prev代表上一次函数返回值 current继续指向下一个元素
....
最后一次函数的返回值作为reduce最终的结果
1 2 1
undefined 3 2
undefined 4 3
*/
/*
prev->1 current->2 return 3
prev->3 current->3 return 6
prev->6 current->4 return 10
*/
/*
arr.reduce(function(prev,current) {},初始值)
记忆: 指定初始值,prev第一次就指向该初始值,以后的prev是上一次函数返回值,current指向第一个元素
没有指定初始值,prev第一次就指向数组第一个元素,current指向第二个元素,以后的prev是上一次函数返回值
*/
const arr = [1, 2, 3, 4]
const r = arr.reduce(function (prev, current, index, arr) {
console.log(prev, current, index)
return prev + current
}, 0)
console.log(r)
/*
prev->0 current->1 retrurn 1
prev->1 current->2 retrurn 3
preve->3 current->3 retrurn 6
preve->6 current->4 return 10
*/
arr.reduceRight(function (prev, current) {
console.log(prev, current)
return prev + current
})
forEach代替for循环
arr.forEach(function (item,index, arr) {
console.log(item)
})
forEach没有返回值 影响原数组
const arr=[2,4,6,8,9,44,22]
let sum=0
arr.forEach(function(item){
sum+=item
})
console.log(sum)//95
filter( ) 过滤 把符合条件的元素组成一个新数组
const arr=[3,44,7,8,79,0,34,55,8,0]
const newArr=arr.filter(function(item){
return item>10
})
console.log(newArr)//[44, 79, 34, 55]
reduceRight()
方法对累加器(accumulator)和数组的每个值(按从右到左的顺序)应用一个函数,并使其成为单个值。
const arr=[1,2,3,4,5,6]
const sum=arr.reduce(function(prev,current){
return prev+current
})
console.log(sum)//21