1.filter
1: const nums = [10, 20, 111, 222, 444, 40, 50];
需求:取出小於100的數
1: //每次回調函數時自動填入形參n,第一次是10,第二次是20...2: //filter中回調函數必須返回一個boolean值3: //當返回true時,函數內部會自動將這次回調的n加入到新的數組中4: //當返回false時,就會過濾掉n5: let newNums = nums.filter(function (n) {6: // n小於100的結果就是true,大於等於就是false7: return n < 1008: });9: console.log(newNums);10: // newNums=[10,20,40,50]
2.map
需求:將新的數組里面全部的數乘以2
1: //相同的是回調函數必須返回值,返回的值替代n2: let newNums2 = newNums.map(function (n) {3: return n*24: });5: console.log(newNums2);6: // newNums2=[20,40,80,100]
3.reduce
需求:求數組里面所有值的和
1: // reduce將數組里面的所有內容匯合處理。2: // 第一個參數是上一次返回的值,第二個參數是這次使用的值3: // 將回調函數視為第一個參數,第二個參數(也就是0)是初始值4: let newNums3 = newNums2.reduce(function (preValue, n) {5: return preValue + n6: }, 0);7: console.log(newNums3);8: // newNums3=240
最后可以一次復合寫完最后的需求。
1: let total = nums.filter(function (n) {2: return n<1003: }).map(function (n) {4: return n*25: }).reduce(function (preValue, n) {6: return preValue + n7: }, 0);8: console.log(total);
es6語法一句話寫完。
1: let total2 = nums.filter(n => n<100).map(n => n*2).reduce((pre, n) => pre+n);2: console.log(total2);
在別的語言這幾個函數也是類似的功能。
