使用带有两个参数的函数的javascript映射
Using javascript map with a function that has two arguments
我知道我可以用以下方式将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=2
)时,我想手动输入参数adjustment
的值,并且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]
从ES6开始,您可以使用:
.map(element => fn(element, params))
在你的情况下,如果我想使用3作为调整:
values = [1,2,3,4]
values.map(n => squarefuncwithadjustment(n, 3))
如果颠倒参数的顺序,可以将调整绑定为第一个参数,这样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]
好!!您可以很容易地将第二个参数传递给map函数。以下方法被广泛用于传递该参数,该参数通常在调用过程中被隐藏:
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);
要在单个函数中执行此操作,您可以在Curry中添加短划线IIFE。
function mapSingleFunc(values, adjustment) {
return values.map((adjustment => x => (x * x) + adjustment)(adjustment));
};
console.log(mapSingleFunc([1,2,3,4], 2))
从最抽象的意义上讲,您可以通过调用数组来隧道传输values
。通过添加IIFE,您可以在闭包中的每个时间向中提供adjustment
。
ES6+:
values.map( x => squarefuncwithadjustment(x,2) );
var squarefuncwithadjustment = (x, adjustment) => {
return (x*x + adjustment);
}
然后
values = values.map(
x => squarefuncwithadjustment(x, 2)
);
相关文章:
- 为什么jQuery文件的函数中有两个参数,但只接收一个参数
- 使用带有两个参数的函数的javascript映射
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- 使用应用程序状态js和视图在angular js url上传递两个参数
- 如何使用 href 连接两个参数
- 定义两个具有相同参数的变量
- 如何从两个参数函数返回随机整数
- 编写一个使用传递两个参数的回调的承诺
- 角度调用父函数,其参数来自两个级别深的指令
- 你能写一些javascript,根据URL参数加载两个独立的index.html页面吗
- 如何使用Javascript从不同的源向函数传递两个参数
- 试图理解一个在JS中有两个参数输入的函数(如函数X(param1)(param2))
- 使用 jquery ajax 请求和日期格式错误解析两个参数
- 具有两个参数的角度函数具有错误:[$parse:语法]
- 如果两个参数都匹配,则从对象中删除重复项
- 带有两个参数的“data”回调不会将buffer.toString()打印为字符串
- 如何从 javascript 函数返回两个参数
- 在一个参数中传递两个值的 URL 字符串
- 如何将两个函数的代码与不同的参数组合在一起
- 是否可以同时从两个调用函数中调用具有单个参数的同一函数