Ответ 1
Использовать анонимную функцию:
values.map(
function(x) { return squarefuncwithadjustment(x, 2); }
);
Я знаю, что я могу использовать map
с функцией одной переменной следующим образом:
var squarefunc = function(x) {
return x*x;
};
values = [1,2,3,4]
values.map(squarefunc) // returns [1,4,9,16]
Как использовать map
со следующей функцией:
var squarefuncwithadjustment = function(x, adjustment) {
return (x*x + adjustment);
}
где, я хочу ввести значение для аргумента adjustment
вручную, когда я вызываю карту, скажем adjustment=2
, и имеет значение x
, взятое из массива values
.
Использовать анонимную функцию:
values.map(
function(x) { return squarefuncwithadjustment(x, 2); }
);
Вы можете использовать функцию создания обратного вызова:
var createSquareFuncWithAdjustment = function(adjustment) {
return function(x) { return (x * x) + adjustment; };
};
values = [1, 2, 3, 4];
values.map(createSquareFuncWithAdjustment(2)); // returns [3, 6, 11, 18]
Если вы измените порядок своих аргументов, вы можете привязать настройку в качестве первого аргумента, так что x
будет передан как второй.
var squarefuncwithadjustment = function(adjustment, x) {
return (x*x + adjustment);
}
values.map(squarefuncwithadjustment.bind(null, 2)); // [3, 6, 11, 18]
Первый аргумент .bind
устанавливает вызывающий контекст, который здесь не имеет значения, поэтому я использовал null
. Второй аргумент .bind
связывает 2
в качестве первого аргумента при вызове.
Возможно, лучше сохранить функцию в виде связанной версии.
var squareFuncWith2 = squarefuncwithadjustment.bind(null, 2);
Затем используйте его с .map
.
values.map(squareFuncWith2); // [3, 6, 11, 18]
Начиная с ES6 вы можете использовать:
.map((element) => func(element,params...))
Ну!! Вы можете легко передать второй параметр функции карты. Следующий метод широко используется для передачи этого параметра, который обычно скрывается во время вызова:
values.map(function(x , this) {
return x*x + this.adjustment;
});
var adjustment = 1;
var values = [1,2,3,4]
values.map(function(x , adjustment) {
return x*x + adjustment;
});
ИЛИ
var adjustment = 1;
var squarefunc = function(x , adjustment) {
return x*x + adjustment;
};
values = [1,2,3,4]
values.map(squarefunc);
var squarefuncwithadjustment = (x, adjustment) => {
return (x*x + adjustment);
}
Тогда
values = values.map(
x => squarefuncwithadjustment(x, 2)
);