我知道我可以通过以下方式将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);
}
其中,我想在调用map时手动输入参数adjustment
的值,比如说adjustment=2
,并从数组x
中取值values
。
答案 0 :(得分:76)
使用匿名函数:
values.map(
function(x) { return squarefuncwithadjustment(x, 2); }
);
答案 1 :(得分:39)
您可以使用回调创建功能:
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]
答案 2 :(得分:14)
从ES6开始,您可以使用:
.map((element) => func(element,params...))
在您的情况下,如果我想使用3作为调整:
values = [1,2,3,4]
values.map(n => squarefuncwithadjustment(n,3))
答案 3 :(得分:7)
如果颠倒参数的顺序,可以将调整绑定为第一个参数,以便将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]
答案 4 :(得分:4)
嘛!!您可以轻松地将第二个参数传递给地图功能。以下方法广泛用于传递此参数,该参数通常在调用期间隐藏:
SelectedItem
OR
Combobox -> Installer
答案 5 :(得分:1)
要在单个功能中执行此操作,您可以向咖喱添加一些IIFE。
values
从最抽象的意义上讲,您可以通过调用数组隧道传输adjustment
。通过添加IIFE,您可以在闭包中每次都输入assert function_to_test() == {'key': 'value'}
。
答案 6 :(得分:0)
ES6 +:
values.map( x => squarefuncwithadjustment(x,2) );
答案 7 :(得分:-2)
var squarefuncwithadjustment = (x, adjustment) => {
return (x*x + adjustment);
}
然后
values = values.map(
x => squarefuncwithadjustment(x, 2)
);