ES6的forEach / map / some / … 有啥不一样
在我们日常写js的时候 常常会出现操作数组的情况 但是最基本的for循环 在操作起来又显得比较愚笨 那我们今天就来看一下 es6中为我们出的一些好的遍历数组方法;
const arr = [1,2,3,4,5,6,7,8,9,10];
1,foreach()
/*
* foreach / 没有返回值
*/
//ES5
arr.forEach(function(item,index){
console.log(item); // 1 2 3 4 5 6 7 8 9 10
})
//ES6
arr.forEach((item,index) => {
console.log(item); // 1 2 3 4 5 6 7 8 9 10
return item
})
2,map()
/*
* 有返回值,返回一个新的数组
*/
let xArr = arr.map((item,index) => {
return item*2
})
console.log(xArr); // [2,4,6,8,10,12,14,16,18,20]
3,some() / every()
/*
* 返回一个布尔值,判断是否有元素符合,如果有一个符合条件,就会终止循环,返回true。
*/
arr.some((item,index) => {
return item > 5; // true
})
/*
* 返回一个Boolean,判断每一个元素是否都符合,如果有一个不符合,就会终止循环,返回false。
*/
arr.every((item,index) => {
return item < 20; //true
})
4,filter()
/*
* 有返回值,返回一个符合条件的数组的集合
*/
let xArr = arr.filter((item,index) => {
return item > 3;
})
console.log(xArr); // [4,5,6,7,8,9,10]
5,reduce()
/*
* 让数组中的前项和后项做某种运算,并返回运算结果
*/
let res = arr.reduce((prev,next) => {
return prev + next;
})
console.log(res); // 28
6,find()
/*
* 不创建新数组,不改变元素组
* 在判断中一旦某个元素符合,立马跳出循环,返回当前符合条件的元素
*/
let res = arr.find((item,index) => {
console.log( 'arr[' + index + '] = ' item ); // arr[3] = 4
return item > 3;
})
console.log(res); // 4