ES6中有六种方法遍历数组(除了最原始的for循环遍历),而且它们都不会改变原始数组,下面总结一下。
一、forEach
数组的元素作为回调函数的参数传到函数内部使用。
let list = ['jjy','aaa','bbb']
list.forEach((a)=>{
console.log(a)
})
注意没有返回值。
二、map
map将数组映射成另一个数组,用返回值的形式。
可以用于对原数组中的元素进行一些处理后返回一个新数组。
let list = [1,2,3]
let res = list.map(a=>{
return a * 2
})
console.log(res) //[2,4,6]
或者是需要将一个对象数组中某个属性的值提取出来。
var person = [
{name:"jjy",age:23},
{name:"aaa",age:18}
];
var age = person.map(function(p){
return p.age;
})
console.log(age);//[23,18]
forEach和map有点类似,但前者没有return,后者需要把元素return出来从而形成一个新数组。
三、filter
顾名思义就是从数组中找出符合条件的元素。
let list = [10,20,30,50,80]
let res = list.filter(a => {
return a>25
})
console.log(res) //[30,50,80]
和map一样需要有一个变量接收结果。
四、find
返回通过测试的数组的第一个元素的值,似乎和filter差不多,但这个只返回第一个符合条件的值。
let person = [
{name:"jjy",age:23},
{name:"wjh",age:24},
{name:"wjh",age:15},
{name:"sam",age:13},
{name:"heng",age:119}
];
let res = person.find(a => {
return a.name == 'wjh'
})
console.log(res) // { name: 'wjh', age: 24 }
filter返回的是一个数组,find返回的是第一个匹配的值。
五、every & some
-
every:判断数组中是否每个元素都满足指定条件(所有)
-
some:判断数组中没有存在满足指定条件的元素(存在)
let person = [
{name:"jjy",age:23},
{name:"wjh",age:24},
{name:"wjh",age:15},
{name:"sam",age:13},
{name:"heng",age:119}
];
let every = person.every(a => {
return a.age > 24
})
let some = person.some(a => {
return a.age >24
})
console.log(every,some) // false true
六、reduce
reduce()第一个参数接收一个方法作为累加器,数组中的每个值(从左往右)合并,最终成为一个值。
第二个参数则接受方法的初始化值,如下
let list = [10,20,30]
let res = list.reduce((sum,num)=>{
return sum + num
},0)
console.log(res)//60
每次遍历的数在方法的第二个参数,即num里,而sum的初始化为0,每次遍历都会将num加到sum上,最后返回sum的最终值。
第二个参数除了0,还可以是数组等等,对应不同的操作。