代码之家  ›  专栏  ›  技术社区  ›  Undistraction

清除将值应用于Ramda中函数数组的函数[重复]

  •  0
  • Undistraction  · 技术社区  · 7 年前

    我想获取一个函数数组并对其应用一个值,将结果收集到一个数组中。我有这个工作,但 flip 让它有点复杂。我如何简化它?

    const f1 = v => v + '1';
    const f2 = v => v + '2';
    const f3 = v => v + '3';
    
    const result = compose(flip(map)([f1, f2, f3]), applyTo);
    
    result('a')  // ["a1", "a2", "a3"]
    

    Ramda REPL

    1 回复  |  直到 7 年前
        1
  •  3
  •   Scott Christopher    7 年前

    您需要的功能是 R.juxt 它获取一个函数列表并返回一个新函数,该函数将把它接收到的所有值应用于列表中的每个函数,生成一个结果值列表。

    const f1 = v => v + '1'
    const f2 = v => v + '2'
    const f3 = v => v + '3'
    
    const result = R.juxt([f1, f2, f3])
    
    console.log(result('a'))  // ["a1", "a2", "a3"]
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>