0

我是 Lodash curry 函数的新手,我正在努力弄清楚为什么curring一些 Lodash 函数,比如pick,不起作用?

var object = { 'a': 1, 'b': '2', 'c': 3 };
 
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
// works fine

_.curry(_.pick)(object)(['a', 'c']);
// => TypeError: _.curry(...)(...) is not a function

为什么第二个示例与第一个示例的输出不同?我将不胜感激您的帮助!

4

1 回答 1

1

似乎_.curry()无法推断_.pick()函数所需的参数数量(参数数量)。_.pick()手动添加函数(2)的arity :

const object = { 'a': 1, 'b': '2', 'c': 3 };

const curriedPick = _.curry(_.pick, 2); // <- add the arity
 
console.log(curriedPick(object)(['a', 'c']));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>

于 2021-02-17T12:37:20.423 回答