コールバック関数は汎用化に最適!<JavaScript勉強中>
配列に対して、
・値を取り出して1ずつ足すという処理
・値を取り出して2乗じるという処理
以下の二つの関数を定義したい場合にコールバックを使わずにそれぞれ実装すると以下のように実装できます。
var a = [1, 2, 3, 4, 5];
//1ずつ足す関数
function addOne() {
var resultArray = ;
for (var i = 0; i< a.length; i++){
r[i] = a[i] +1;
}
}
//2乗じる関数
function multiTwo() {
var resultArray = ;
for (var i = 0; i< a.length; i++){
r[i] = a[i] * 2;
}
}
for文の中の要素に対して+1するか*2するかの部分しか処理が異なりません。
これはコールバック関数を利用することで以下のように汎用化可能です!
var a = [1, 2, 3, 4, 5];
//汎用化部分(コールバック関数fで切り替え)
function _map(f, a) {
var resultArray = [];
for (var i = 0; i< a.length; i++){
resultArray[i] = f(a[i]);
}
return resultArray;
}
var addOne = function (x){return x +1;};
//1ずつ足す関数
function mapAddOne(a) {
return _map(addOne, a)
}
b = mapAddOne(a);
var multiTwo = function (x){return x *2;};
function mapmultiTwo(a) {
return _map(addOne, a)
}
b = mapAddOne(a);
console.log(b);