The beauty of functional programming
// 創建一個函數,就像python里面的map
function mapForEach(arr, fn) {
var newArr = [];
for (var i=0; i < arr.length; i++) {
newArr.push(
fn(arr[i])
)
};
return newArr;
}
var arr1 = [1,2,3];
console.log(arr1);
// map方程到數組中的每個元素,并返回新的數組
var arr2 = mapForEach(arr1, function(item) {
return item * 2;
});
console.log(arr2);
var arr3 = mapForEach(arr1, function(item) {
return item > 2;
});
console.log(arr3);
var checkPastLimit = function(limiter, item) {
return item > limiter;
}
// 使用bind() method, 我們將這個函數的參數從兩個降到了一個
var arr4 = mapForEach(arr1, checkPastLimit.bind(this, 1));
console.log(arr4);
var checkPastLimitSimplified = function(limiter) {
return function(limiter, item) {
return item > limiter;
}.bind(this, limiter);
};
// 使用first class function,讓方程返回方程,使代碼更加簡化
var arr5 = mapForEach(arr1, checkPastLimitSimplified(1));
console.log(arr5);