[笔记]JavaSceipt 数组常用遍历方法,ES6新增数组遍历方法

一,ES5中常用数组遍历方式:
首先定义一个数组

let arr = [7,9,12,16,3,20,8,5,6]

1.for 循环

for(let i = 0;i

2.forEach()遍历

arr.forEach((item=>{

console.log(item)

}))

注意:forEach只做循环遍历,不做值返回

3.map()遍历,返回新的数组,数组中的每一个元素为调用func的结果,不对原数组做修改

let result = arr.map(item=>item+1)

console.log(result)        //  [8, 10, 13, 17, 4, 21, 9, 6, 7]

4.filter() 根据函数设定的条件过滤,返回符合func条件的元素

let result = arr.filter(item=>item%2 ==0)

console.log(result)  //  [12, 16, 20, 8, 6]


5.reduce(Fn(prev,cur,index,arr)=>{},value) 接收一个函数做累加器, 并传入一个初始值
例1,求和

let sum = arr.reduce((prev,cur)=>{

return prev+cur

},0)

console.log(sum)        //86

例2 ,获取数组中最大值

let sum = arr.reduce((prev,cur)=>{

return Math.max(prev,cur)

},0)

console.log(sum)  //20

例3,数组去重

let arr1 = [1,2,3,4,2,1]

let sum = arr1.reduce((prev, cur) => {

prev.indexOf(cur) == -1 && prev.push(cur)

return prev

}, [ ])

console.log(sum)            // [1, 2, 3, 4]

5.some()返回布尔值,判断是否有元素符合func条件

let result = arr.some(item=>item==12)

console.log(result)     // true    


6.every()返回布尔值,判断是否每一个元素都符合func条件

let result = arr.some(item=>item==12)

console.log(result)     // false


7.for in (存在问题)

Array.prototype.foo = function(){

console.log('foo')

}

for(let i in arr){

console.log(arr[i])        //7  9  12  16  3  20  8  5  6   f (){ console.log('foo') }

]

}

注意:for in ,在Array的原型中添加一个func,此时再循环数组,原型下的方法,将被遍历出来

二,ES6中新增数组遍历方式:
首先定义一个数组

let arr = [1,2,3,4,5,6,2,3]

1.find() 遍历数组并找到数组中第一个与返回符合条件的值

let res = arr.find(item=>item==2)

console.log(res)  //2

2.findIndex() 遍历数组并找到数组中第一个与返回符合条件的值的下标

let res = arr.findIndex(item=>item==2)

console.log(res)  // 1 

3.for of , values() keys() entries()

for(let item of arr){                                //直接使用for of 等同于  values()  输出每一个元素的值

console.log(item)            // 1  2  3  4  5  6  2  3

}

1.values() 输出每一个元素的值

for(let item of arr.values()){                    

console.log(item)            // 1  2  3  4  5  6  2  3

}
  1. keys() 输出每一个元素的索引
for(let item of arr.keys()){                          

console.log(item)            //0 1 2 3 4 5 6 7

}

3.entries() 输出每一个元素的索引与值

for(let [index,item] of arr.entries()){                //.entries(  输出每一个元素的索引与值

console.log('索引',index,‘值’,item)        

}

//输出结果:

// 索引 0 值 1

//索引 1 值 2

//索引 2 值 3

//索引 3 值 4

//索引 4 值 5

//索引 5 值 6

//索引 6 值 2

//索引 7 值 3

你可能感兴趣的:([笔记]JavaSceipt 数组常用遍历方法,ES6新增数组遍历方法)