具有多变量功能的Lodash Map
Lodash Map with mulitvariable function
是否可以使用lodash来遍历集合并将项目传递给需要两个(或更多)参数的函数?在下面的示例中,该函数应该接受两个值并将它们相加。该映射应该接受一个数组,并对每个数组加10。以下是我认为它是如何工作的:
function x (a, b) {
return a + b
}
var nums = [1, 2, 3]
console.log(_.map(nums,x(10)))
--->ans should be [11, 12, 13]
--->actually is [ undefined, undefined, undefined ]
您在这里要做的是"curry"x
函数,lodash通过curry()支持该函数。一个柯里化的函数是一个可以一次接受一个参数的函数:如果你没有提供完整的参数集,它会返回一个包含剩余参数的函数。
curry是这样的:
function x(a,b) {
return a + b;
}
x = _.curry(x); //returns a curried version of x
x(3,5); //returns 8, same as the un-curried version
add10 = x(10);
add10(3); //returns 13
所以你的原始代码非常接近curry后的版本:
console.log(_.map([1,2,3], _.curry(x)(10))); //Prints [11,12,13]
(正如在对问题的评论中所指出的;Function.prototype.bind
也可以用于套用,但是如果您已经在使用lodash,那么您最好使用特定于任务的东西)
你可以这样做:
var numbers = [1, 2, 3];
function x(value, number) {
return value + number;
}
console.log(_.map(numbers, function(value) { return x(value, 10) }));
当然,闭包很棒!只需创建一个函数"关闭"(包装)您的x
函数并传递10作为其第二个参数。
function x (a, b) {
return a + b;
}
function addTen (number) {
return x(numberToAddTo, 10);
}
var nums = [1, 2, 3];
console.log(_.map(nums, addTen));
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Lodash从集合创建集合
- Lodash 从值数组中查找数组中的值
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 使用map来检查是否为真'不起作用
- 回调函数中传递参数的困难(Google Map API Markers)
- Lodash懒惰链不'It’我不管用
- Lodash映射并返回唯一
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 应该如何在typescript中键入lodash流函数
- 使用lodash的特定对象特性值
- 为什么' lodash.map(['A'], String.prototype.toLowerCase.
- ES6中的map方法和lodash的区别是什么?
- 使用groupBy和map来使用LoDash和Moment转换数据
- Lodash在嵌套的数组和对象上使用map
- 为什么像LoDash或UnderScore这样的Javascript库比map、reduce或filter这样的原始JS
- 在下划线/lodash中,如何避免在“map”方法中重复计算
- 在lodash map()中更改起始位置
- 具有多变量功能的Lodash Map
- Lodash和map / filter / keys -更好的实现