数组遍历十五法

forEach
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
currentValue 当前值
index 索引
array 当前对象
thisArg 执行回调函数时用作this的值
ex:
array.forEach((item,index)=>{})
返回新数组
map
var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // 返回新数组的元素
}[, thisArg])
ex:
array.map((item,index)=>item*2)
filter

创建一个新数组, 其包含通过所提供函数实现的测试的所有元素(过滤)。

var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
ex:
let arr = [1,2,3]
arr.filter((item,index)=>item>1) // [2,3]
for循环
for
for ([initialization]; [condition]; [final-expression])
ex:
for(let i = 0; i<10;i++){}
使用break跳出循环
for of

for of语句在可迭代对象(Array,Map,Set等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

for (variable of iterable) {
    //statements
}
ex:
let arr = [1,2,3]
for (let i in arr) {
    console.log(i) // 1,2,3
}
for in

for...in语句以任意顺序遍历一个对象的除Symbolde以外的可枚举属性,包括继承的可枚举属性。数组不推荐使用该方法

for (variable in object){
  statement
}
ex:
let arr = ['张三','李四']
for(let index in arr){
    console.log(index) // 0,1
}
返回Boolean
every

测试一个数组内的所有元素是否都能通过某个指定函数的测试,有一项不符合条件时就返回,如果arr为空数组时,一定返回true

arr.every(callback(element[, index[, array]])[, thisArg])
ex:
let arr = [1,2,3]
arr.every(item=>item>2) // false

some

测试数组中是不是至少有1个元素通过了被提供的函数测试。如果arr为空数组时,一定返回false

arr.some(callback(element[, index[, array]])[, thisArg] )
ex:
let arr = [1,2,3]
arr.some(item=>item>2) // true
返回元素
find

返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined

arr.find(callback[, thisArg])
ex:
let arr = [1,2,3]
arr.find(item=>item>1) // 2
arr.find(item=>item<0) // undefined
返回索引
findIndex

返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

arr.findIndex(callback(element,inedx,array)[, thisArg])
ex:
let arr = [1,2,3]
arr.findIndex(item=>item>2) // 1
arr.findIndex(item=>item>5) // -1
reduce

对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

累加
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
accumulator 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue
currentValue 当前操作的值
index 当前索引
initialValue 初始值,如果该项为空时,将会使用数组的第一项作为初始值,并从第二项开始遍历.
ex:
let arr = [1,2,3]
arr.reduce((accumulator,currentValue,index) =>{
    return accumulator + currentValue
},0)
摊平二维数组
[[1,2],[2,3],[3,4]].reduce((acc,cur)=>acc.concat(crr),[]) // [ 1, 2, 2, 3, 3, 4 ]
合并数组
[4,5,6].reduce((acc,cur)=>{
   acc.push(cur)
   return acc
},[1,2,3]) // [ 1, 2, 3, 4, 5, 6 ]
数组转对象
[{key:'name',value:'张三'}].reduce((acc,cur)=>{
    acc[cur.key]  = cur.value
    return acc
 },{}) // {name:'张三'}
去重
[1,2,2,3,4,5].reduce((acc,cur)=>{
    !acc.includes(cur) && acc.push(cur)
    return acc
 },[]) // [ 1, 2, 3, 4, 5 ]

reduceRight

逆序的reduce

键值

entries,keys,values都返回一个遍历器对象。

entries
for(let key of ['张三','李四'].entries()){
    console.log(key) // [ 0, '张三' ] [ 1, '李四' ]
}
keys
for(let key of ['张三','李四'].keys()){
    console.log(key) // 0 1
}
values
for(let key of ['张三','李四'].values()){
    console.log(key) // 张三 李四
}

ps:根据使用场景的不同选择合适的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值