filter用法
- filter()方法中行參是一個回調(diào)函數(shù).這個回調(diào)函數(shù)就是一個規(guī)則,返回一個布爾值.filter()方法會對數(shù)組中每一個元素使用這個回調(diào)函數(shù).注意,這里說的是每一個元素.并且將返回值為true的元素裝入一個新數(shù)組返回.
語法
array.filter(function(currentValue,index,arr), thisValue)
參數(shù)說明

var ages = [32, 33, 12, 40];
function checkAdult(age) {
return age >= 18;
}
let newArr = ages.filter(checkAdult);//32,33,40
forEach方法
- 語法:forEach和map都支持2個參數(shù):一個是回調(diào)函數(shù)(item,index,list)和上下文;
- forEach:用來遍歷數(shù)組中的每一項;這個方法執(zhí)行是沒有返回值的,對原來數(shù)組也沒有影響;
- 數(shù)組中有幾項,那么傳遞進去的匿名回調(diào)函數(shù)就需要執(zhí)行幾次;
每一次執(zhí)行匿名函數(shù)的時候,還給其傳遞了三個參數(shù)值:數(shù)組中的當前項item,當前項的索引index,原始數(shù)組input; - 理論上這個方法是沒有返回值的,僅僅是遍歷數(shù)組中的每一項,不對原來數(shù)組進行修改;但是我們可以自己通過數(shù)組的索引來修改原來的數(shù)組;
- forEach方法中的this是ary,匿名回調(diào)函數(shù)中的this默認是window;
var ary = [12,23,24,42,1];
var res = ary.forEach(function (item,index,input) {
input[index] = item*10;
})
console.log(res);//-->undefined;
console.log(ary);//-->會對原來的數(shù)組產(chǎn)生改變; [120, 230, 240, 420, 10]
打印結(jié)果:
undefined
[120, 230, 240, 420, 10]
map用法
- 不會改變原數(shù)組,返回新數(shù)組
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];
- map:和forEach非常相似,都是用來遍歷數(shù)組中的每一項值的,用來遍歷數(shù)組中的每一項;
- 區(qū)別:map的回調(diào)函數(shù)中支持return返回值;return的是啥,相當于把數(shù)組中的這一項變?yōu)樯叮ú⒉挥绊懺瓉淼臄?shù)組,只是相當于把原數(shù)組克隆一份,把克隆的這一份的數(shù)組中的對應(yīng)項改變了);
- 不管是forEach還是map 都支持第二個參數(shù)值,第二個參數(shù)的意思是把匿名回調(diào)函數(shù)中的this進行修改。