Próbuję odwzorować wartości na funkcję, która będzie akceptować pomnożenie dwóch liczb, ale mam problemy z tym związane (jeśli to nie ma sensu, zapoznaj się z przykładami poniżej).Jak przekazać parametr do array.map()?
Mam tablicę liczb i chciałbym podwójne/potrójne/poczwórne ... wartości tej tablicy. Stworzyłem funkcje, które by to zrobiły i karmię te double()
i triple()
w 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));
To rozwiązanie nie jest skalowalne, a jeśli chcę pomnożyć wartości przez 5 lub 10? Potrzebuję bardziej abstrakcyjnej funkcji, która wymagałaby pomnożenia parametrów. Jestem zdezorientowany, jak to zrobić. Moja próba tak daleko jest:
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
Jak mijam multiply()
parametr multiplyBy
?
Używałbym terminu "fabryka" tylko dla funkcji zwracających obiekty. – Bergi
Uczyniłem moją odpowiedź bardziej czytelną, użyłem dziwnego wcięcia tylko po to, aby transformacja do funkcji strzałki ES6 była bardziej oczywista. – Bergi
Ta odpowiedź jest łatwiejsza do zrozumienia niż przy użyciu '.bind' – Denny