JavaScriptにおける関数プログラムの表現-mapとreduce
3026 ワード
最近JavaScriptを勉強していますが、途中でmapとreduceの方法を見て、面白いと思います.勉強しながらこのブログを書きます.
この二つの関数はいずれもある程度関数式プログラミングの思想を表しています.もうすぐ関数は他の関数に入ってくるパラメータとして作用します.
map()メソッドの調合者は、一般的には配列であり、パラメータは関数であり、calbackと呼ばれ、戻り値は、元の配列の要素ごとに与えられたcalback関数を実行する戻り値からなる新しい配列である.
つまり、map()法を使うと、配列の各要素をパラメータとして、与えられた関数に伝達します.この関数が戻り値がある場合、毎回実行関数から得られた戻り値を新しい配列で返します.
もちろん、calback関数は戻り値がなくてもいいです.このとき、calback関数を見てundefinedに戻ります.
reduce()方法は左から右の順番で、まず第一、第二の要素に対してcalback関数を実行し、得られた結果をパラメータとして継続し、次の要素に対してcalback関数を実行し、配列の最後の要素まで最終的な戻り値を構築する.
注意したいのは、reduce()メソッドは、パラメータとしてcalback関数の他に、initial Valueをパラメータとして指定することができます.initial Valueを指定すると、calbackの最初のパラメータとしてinitial Valueを使用して、配列の最初の要素を第二のパラメータとして使用します.
この二つの関数はいずれもある程度関数式プログラミングの思想を表しています.もうすぐ関数は他の関数に入ってくるパラメータとして作用します.
map()メソッドの調合者は、一般的には配列であり、パラメータは関数であり、calbackと呼ばれ、戻り値は、元の配列の要素ごとに与えられたcalback関数を実行する戻り値からなる新しい配列である.
つまり、map()法を使うと、配列の各要素をパラメータとして、与えられた関数に伝達します.この関数が戻り値がある場合、毎回実行関数から得られた戻り値を新しい配列で返します.
function pow(x) {
return x * x;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
上記のmap()法により、arr配列の各要素をpow()法のパラメータとして実現し、その結果得られた戻り値はpow()関数の戻り値の集合、つまり1つの配列である.もちろん、calback関数は戻り値がなくてもいいです.このとき、calback関数を見てundefinedに戻ります.
var arr = [0, 1, 2, 3, 4, 5];
var arr1 = arr.map(function(item){ console.log(item) });
// 0 1 2 3 4 5 // arr1 [undefined, undefined, undefined, undefined, undefined, undefined]
reduce()方法を見ても、map()方法と同じで、コーディネーターも配列ですが、ここのcalback関数は少し違っています.二つのパラメータを受け取らなければならないと要求しています.reduce()方法は左から右の順番で、まず第一、第二の要素に対してcalback関数を実行し、得られた結果をパラメータとして継続し、次の要素に対してcalback関数を実行し、配列の最後の要素まで最終的な戻り値を構築する.
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
return x + y;
}); // 25
これはreduce()法を用いて配列の和を求める例である.注意したいのは、reduce()メソッドは、パラメータとしてcalback関数の他に、initial Valueをパラメータとして指定することができます.initial Valueを指定すると、calbackの最初のパラメータとしてinitial Valueを使用して、配列の最初の要素を第二のパラメータとして使用します.