読者です 読者をやめる 読者になる 読者になる

hoz blog

営業からSEに転職した文系エンジニアです。プログラミングと趣味の株に関してブログを書いていこうと思います。

コールバック関数は汎用化に最適!<JavaScript勉強中>

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);