我試圖將值映射到一個函數,該函數將接受兩個數字相乘,但這樣做有困難(如果這沒有意義,請看下面的示例)。如何將參數傳遞給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