Array中的filter,forEach, map用法

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進行修改。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容