ES6--数组循环

ES6中新增的数组循环方法

forEach | map | filter | some() | every() | reduce() | reduceRight() | for…of…

forEach

arr.forEach(function(val,index,arr){

console.log(this,val,index,arr)

},123); //改变this指向,是什么数据类型,this就是什么

需要三个参数

第一个参数:循环出来的值 val

第二个参数:循环出来的值的索引 index

第三个参数:数组本身 arr

map

let arr = [

 {title:'aaaa',read:100,hot:true},

 {title:'bbbb',read:100,hot:true},

 {title:'cccc',read:100,hot:true},

 {title:'dddd',read:100,hot:true}

];

let newArr = arr.map((val,index,arr)=>{

 console.log(val,index,arr);

 return "返回值";  //map必须有返回值,否则等同于forEach

})

map()需要有返回值,无返回值就等同行与forEach

filter

用来过滤一些不合格的元素,如果回调函数返回的是 true,那么自然会被留下来,为 false 的就会被过滤掉。前端培训

var arr = [

 {title:'侯耀华有多“恨”郭德纲?听听这段', read:50, hot:true},

 {title:'赵家班爆笑小品《镶牙》:宋小宝演', read:100, hot:true},

 {title:'最后10秒的精彩,猎豹队小哥一人', read:20, hot:false},

 {title:'赵本山自爆当年李双江等来找他,他', read:5, hot:true}

]

let newArr = arr.filter((val,index,arr)=>{

return val.hot==true;

})

提取出符合条件的元素

some

查找一个字符串存在不存在,返回一个布尔值

let arr = ["apple","banana","orange"];

let b = arr.some((val,index,arr) => {

 return val == "banana";

})

console.log(b?"banana":"没有香蕉")

every

查找数组中的每一项,所有元素都要符合条件,才返回 true

let arr = [1,3,5,7,9];

var b = arr.every((val,index,arr)=>{

return val%2==1;

});

console.log(b) //true   判断数组中每一项是否是奇数

reduce()

从左往右运算→求数组的和、差、积、阶乘

结果返回一个数字

let arr = [1,2,3,4,5,6,7,8,9,10];

let res = arr.reduce((prev,curr,index,arr)=>{

return prev + curr;

})

console.log(res)

第一个参数表示上一项

第二个参数表示当前项

第三个参数表示循环对应的索引

第四个参数表示数组本身

reduceRight

从右往左计算

let arr = [2,3,3];

let res = arr.reduceRight((prev,curr,index,arr)=>{

 return prev - curr;

})

console.log(res)

for…of…

arr.keys() 数组下标

arr.entries() 数组某一项

输出数组中每一项的值

let arr = ["apple","banana","tomato"];

console.log("遍历值");

for(let val of arr){

console.log(val);  

}

输出数组中每项对应的索引

for(let index of arr.keys()){

console.log(index);  //arr.keys() 遍历索引

}

输出数组中每项的值和索引

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

console.log(item);

}

你可能感兴趣的:(前端es6)