arr.map(function(item) { ... }) 能夠配合箭頭函數:arr.map(item => ... ) 數組
let arr1 = [1,2,3] let result1 = arr1.map(item=>item*2) console.log(result1) // [2,4,6]
let score = [56,88,90]; let grade = score.map(item=>item>=60?'及格':'不及格'); console.log(score); // [56, 88, 90] console.log(grade); // ["不及格", "及格", "及格"]
能夠看到一一對應的關係函數
語法:arr.reduce(function(tmp, item, index [,arr]){ ... }[, initialValue])spa
tmp:初始值,或是上一次的疊加結果值,不指定initialValue時默認爲arr[0]的值爲起始值code
item:當前值blog
index:當前值在數組中的index值字符串
arr:當前數組,可不寫it
initialValue:指定初始執行的值io
下面給幾個例子用於熟悉這幾個參數的含義console
let arr2 = [12,69,180,8763] arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) }) // 12,69,1
// undefined,180,2
// undefined,8763,3
arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) },[]) // [] 12 0 // undefined,69,1 // undefined,180,2 // undefined,8763,3
arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) },0) // 0 12 0 // undefined,69,1 // undefined,180,2 // undefined,8763,3
tmp是初始值或是上一次的疊加結果值,因此第一個咱們能夠看到tmp是有值的:function
當有initialValue時顯示爲initialValue值,若是initialValue缺省則顯示arr[0]的值,即12
後面剩下的循環這裏undefined是由於reduce裏面沒有寫二者相加這個語句,因此tmp這個值是沒有的
在function裏添加tmp+item,看下面這兩個例子:
arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) return tmp+item },[]) // [] 12 0 // 12,69,1 // 1269,180,2 // 1269180,8763,3
// 這裏明顯是字符串的拼接了,由於初始值是[],因此tmp+item是按照字符串拼接的方式相加的
let result2 = arr2.reduce((tmp,item,index)=>{ console.log(tmp,item,index) return tmp+item }, 0) // 0 12 0 // 12,69,1 // 81,180,2 // 261,8763,3 console.log(result2) // 9024 result2最後是最終求和的結果
若是想求平均值呢?邏輯是:前面循環求和,最後一次求和後除以數組個數,即:
let result3 = arr2.reduce((tmp,item,index)=>{ if(index!=arr2.length-1){ // 不是最後一個 return tmp+item }else { // 是最後一個 return (tmp+item)/arr2.length } }) console.log(result3) // 2256 求平均值
arr.filter(function(){ ... })
let arr3 = [22,5,63,34,12,7,69] let result4 = arr3.filter(item=>item%3==0) console.log(result4) // [63, 12, 69]
filter在循環的過程當中有一個判斷過程,是true則返回,false則去掉
arr.forEach(function(item, index){ ... })