是否可以使用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
答案 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