ES5為數組定義了5個迭代的方法壹士。每個方法都接收兩個參數:
1)要在每一項上運行的函數
2)運行該函數的作用域對象--影響this的值(可選)樟蠕。
運行的函數會接受三個參數:1)數組項的值 2)該項在數組中的位置 3)數組對象本身。
1报账、.every()
對數組的每一項運行給定函數,如果該函數對每一項都返回true盗扒,則返回true纱昧。類似于邏輯與刨啸,所有都滿足的條件的情況下返回true:
var arr = [1,5,9,7,25,16,30]
var result = arr.every(function(item,index,array){
return item > 0
})
console.log(result)
這里的條件時數組中的內容大于0,原數組中的所有內容都大于0识脆,所以這里返回的是true设联;
只要有一項不滿足條件則輸出false:
var arr = [1,5,9,7,25,16,30]
var result = arr.every(function(item,index,array){
return item > 5
})
console.log(result)
這里條件時大于5,此數組中有小于5的項灼捂,所以返回false:
2离例、.some()
對數組的每一項運行給定函數,如果該函數對任一項返回true悉稠,則返回true宫蛆。正好和every相反,與邏輯或的方法相近的猛,數組中有滿足條件的內容時返回true:
var arr = [1,5,9,7,25,16,30]
var result = arr.some(function(item,index,array){
return item > 5
})
console.log(result)
這里條件時內容大于5耀盗,原數組中存在大于5的項想虎,所以輸出true:
當全都不滿足條件時輸出false:
var arr = [1,5,9,7,25,16,30]
var result = arr.some(function(item,index,array){
return item < 0;
})
console.log(result)
這里的條件是小于0,原數組中所有項都不小于0叛拷,所以輸出false
3舌厨、.filter()
對數組的每一項運行給定函數,返回該函數會返回true的項組成的數組胡诗。
挑選出符合條件的項邓线,并組成新的數組:
var arr = [1,5,9,7,40,25,16,30]
var result = arr.filter(function(item,index,array){
return item > 29;
})
console.log(result)
這里的條件時大于29,原數組里只有“40”和“30”大于29(滿足所給定的條件)煌恢,所以返回這兩項內容組成的新數組:
4骇陈、.map()
對數組的每一項運行給定函數,返回每次函數調用的結果組成的數組瑰抵。
var arr = [1,5,9,7,40,25,16,30]
var result = arr.map(function(item,index,array){
return item * 2;
})
這里給的條件是乘以二你雌,將原數組中的每一項拿出來做乘以2的運算,并且返回運算后的新數組(不改變原數組)
console.log(result)
5二汛、.forEach()
對數組的每一項運行給定函數婿崭。該方法沒有返回值。
var arr = [1,5,9,7,40,25,16,30]
var result = arr.forEach(function(item,index,array){
return item * 2;
})
console.log(result)
這里也是給原數組的每一項做*2的運算
和map一樣肴颊,只不過map可以返回運算后的新數組氓栈,.forEach()沒有返回值,如果一定要返回婿着,則只有一個返回值:undefined:
雖然沒有返回值授瘦,但是它可以打印和運算:
var arr = [1,5,9,7,40,25,16,30]
var result = arr.forEach(function(item,index,array){
console.log (item * 2);
})
這里原數組內的各項做了乘以2的運算并且能夠打印,結果:
小編能力有限竟宋,存在不足或不全提完,請大家指出,共同學習與交流丘侠。