forEach: 類似for循環,無返回值
var arr = [1,2,3,4,5];
arr.forEach((item,index,array) => {
console.log(index + '--' + item); // 0--1 1--2 2--3 ...
console.log(array); // [1, 2, 3, 4, 5]
})
map: 有return值,返回一個新數組,與原先數組有映射關係
var arr = [1,2,3,4,5];
var arr1 = arr.map((item,index,array) => {
return item *= 2
})
console.log(arr1); //[2, 4, 6, 8, 10]
some: 返回一個布爾值,判斷數組中是否有item滿足該條件
var arr = [1,2,3,4,5];
var flag = arr.some((item,index,array) => {
return item > 3 //條件判斷
})
console.log(flag); //true
every:返回一個布爾值,判斷數組是否每一個item滿足該條件
var arr = [1,2,3,4,5];
var flag = arr.every((item,index,array) => {
return item > 3 //條件判斷
})
console.log(flag); //false
filter是一個過濾器,滿足條件的推入新數組
var arr = [1,2,3,4,5];
var arr1 = arr.filter((item,index,array) => {
return item > 3 //條件判斷
})
console.log(arr1); // [4, 5]
reduce具有收斂彙總性,最終返回prev(每一次循環結果作爲下次的prev)
//prev 第一個值 //next 當前值
//index 當前值的索引 //array 傳入的數組
/* prev 第一個參數,可以預先傳入,next爲數組第一項,開始index=0 */
var arr = [1,2,3,4,5];
var arr1 = arr.reduce((prev,next,index,array) => {
return prev += next
},0)
console.log(arr1); // 15
/* prev可不傳,prev取數組第一項,next爲第二項,開始index=1 */
var arr2 = arr.reduce((prev,next,index,array) => {
return prev += next
})
console.log(arr2); //15
recuceRight 從右開始循環數組
var arr = [1,2,3,4,5];
var arr3 = arr.reduceRight((prev,next,index,array) => {
return prev.concat(next)
},[])
console.log(arr3); // [5, 4, 3, 2, 1]