代码之家  ›  专栏  ›  技术社区  ›  Jan Bodnar

有没有办法使用ramda在JavaScript中将参数传递给谓词?

  •  2
  • Jan Bodnar  · 技术社区  · 6 年前

    我用JavaScript编写了一个带有ramda库的函数代码。我想要一个泛型函数 hasNChars 动态传递参数 n . 我做不到 R.any(hasNChars(10), words)

    那么有没有办法以某种方式传递n参数的值呢?

    var R = require('ramda');
    
    let words = ['forest', 'gum', 'pencil', 'wonderful', 'grace',
        'table', 'lamp', 'biblical', 'midnight', 'perseverance', 
        'adminition', 'redemption'];
    
    let hasNChars = (word, n=3) => word.length === n;
    
    let res = R.any(hasNChars, words);
    
    console.log(res);
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   jordrake    6 年前

    你已经接近了,你只需要创建另一个带N的函数,你可以立即计算它而不需要输入 word 同样,这样N值也在最终评估的范围内。

    let hasNChars = (n=3) => (word) => word.length === n;

    用法: let res = R.any(hasNChars(10), words);

    默认n=3时的用法: let res = R.any(hasNChars(), words);