私は、2つの数値を乗算することはできますが、問題を抱えている関数に値をマップしようとしています(これが意味をなさない場合は、以下の例を参照してください)。array.map()にパラメータを渡す方法は?
私は数字の配列を持っています。私はこの配列の値を倍精度/三重/四倍にしたいと思います。私はこれを行う関数を作成しており、double()
とtriple()
をmap()
に入力しています。
var arr = [1, 2, 3, 4, 5];
function double(num) {
return num * 2;
}
function triple(num) {
return num * 3;
}
console.log(arr.map(double));
console.log(arr.map(triple));
このソリューションは、値を5または10で乗算したい場合にはスケーラビリティがありません。私は何を乗算するかというパラメータを取るより抽象的な関数が必要です。私はこれを行う方法について混乱しています。私の試みはこれまでのところです:
var arr = [1, 2, 3, 4, 5];
function multiply(num, multiplyBy) {
return num * multiplyBy;
}
console.log(arr.map(multiplyBy(4)); // Uncaught TypeError: NaN is not a function
がどのように私はmultiply()
multiplyBy
パラメータ渡すでしょうか?
オブジェクトを返す関数に対してのみ、「ファクトリ」という用語を使用します。 – Bergi
私は自分の答えをより読みやすくしました。私は奇妙な字下げを使用して、ES6の矢印機能のワンライナーへの変換をより明白にしました。 – Bergi
この答えは '.bind'を使うよりも理解しやすいです – Denny