具有多变量功能的Lodash Map

时间:2015-05-17 14:30:36

标签: javascript lodash

是否可以使用lodash迭代集合并将项目传递给需要两个(或更多)参数的函数?在以下示例中,该函数应采用两个值并添加它们。地图应该采用数组并为每个数组添加10。以下是我认为这有效的方法:

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_into_selected_table_from_temp_table`(IN `table_name` TEXT)
    DETERMINISTIC
begin
set @insert_q= CONCAT("INSERT INTO ",table_name," VALUES("); 






set @insert_q= CONCAT(@insert_q,get_temp_table(),")"); 

PREPARE stmt2 FROM @insert_q;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
 end

3 个答案:

答案 0 :(得分:6)

你在这里尝试做的事情是"咖喱" x函数,lodash通过curry()支持。一个curried函数是一个可以一次获取一个参数的函数:如果你不提供一整套参数,它会返回一个期望剩余参数的函数。

这就是currying的样子:

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

所以你原来的代码非常接近咖喱版:

console.log(_.map([1,2,3], _.curry(x)(10))); //Prints [11,12,13]

(正如在问题评论中指出的那样; Function.prototype.bind也可以用于讨论,但如果您已经使用了lodash,那么您也可以使用特定于该任务的内容)< / p>

答案 1 :(得分:4)

你可以这样做:

$datetime

答案 2 :(得分:0)

当然,关闭真棒!只需创建一个“关闭”(包装)var numbers = [1, 2, 3]; function x(value, number) { return value + number; } console.log(_.map(numbers, function(value) { return x(value, 10) })); 函数的函数,并将10作为第二个参数传递。

x