關於數組中foreach() 、map()、filter()、reduce() 、 some()、every()的總結。
1.foreach()
var arr = [1,2,3,4];
arr.foreach((item,index,arr)=>{
console.log(item); //結果為1,2,3,4
});
//foreach遍歷數組,無返回值,不改變原數組,僅僅只是遍歷,常用於注冊組件、指令等等。
2.map()
var arr = [1,2,3,4];
arr.map((item,index,arr)=>{
return item*10; //結果為10,20,30,40
});
//map遍歷數組,返回一個新數組,不改變原數組
3.filter()
var arr = [1,2,3,4];
arr.filter((item,index,arr)=>{
return item >2; //結果為[3,4]
});
//filter過濾掉數組中不滿足條件的值,返回一個新數組,不改變原數組
4.reduce()
var arr = [1,2,3,4];
arr.reduce((result,item,index,arr)=>{
console.log(result);
console.log(item);
console.log(inddx);
return result+item;
});
//reduce讓數組的前后兩項進行某種計算,然后返回其值,並繼續計算,不改變原數組,返回計算的最終結果,從數組的第二項開始遍歷。
5.some()
var arr = [1,2,3,4];
arr.some((item,index,arr)=>{
return item > 2; //返回true
});
//遍歷數組每一項,有一項返回true,則停止遍歷,結果返回true。不改變原數組。
6.every()
var arr = [1,2,3,4];
arr.every((item,index,arr)=>{
return item >1; //返回false
});
//遍歷數組每一項,每一項返回true,最終結果為true.有一項返回false,停止遍歷,結果返回為false。不改變原數組。
以上6個方法均為ES6語法,IE9及以上才支持。不過可以通過babel轉意支持IE低版本。
以上均不改變原數組。
some、every返回true、false。
map、filter返回一個新數組。
reduce讓數組的前后兩項進行某種計算,返回最終操作的結果。
forEach 無返回值。