小编cpo*_*ver的帖子

使用 Ramda 在循环中从多个数组中取出前 X 个总项目

我有一个数组数组,想要编写一个函数x,通过按顺序从每个数组中获取项目来返回最高数量的项目。

这是我所追求的一个例子:

    const input = [
      ["1a", "2a", "3a", "4a", "5a"],
      ["1b", "2b", "3b", "4b", "5b"],
      ["1c", "2c", "3c", "4c", "5c"],
      ["1d", "2d", "3d", "4d", "5d"]
    ];

    const takeRoundRobin = count => arr => {
      // implementation here
    };

    const actual = takeRoundRobin(5)(input);

    const expected = [
      "1a", "1b", "1c", "1d", "2a"
    ];
Run Code Online (Sandbox Code Playgroud)

我看到了一个 Scala 问题的建议,它解决了这个问题zip,但在 Ramda 中你只能传递 2 个列表来压缩。

javascript arrays functional-programming ramda.js

3
推荐指数
1
解决办法
618
查看次数

如何通过使用 Ramda 在输入数组上映射谓词来获取两个数组

是否有一种简洁的方法可以实现与以下相同的结果,但是:

  • 没有突变
  • 无需多次迭代输入数组
  • 使用 Ramda(最好)

我想过使用 reduce 来更新包含通过/失败数组的累加器对象,但我不确定是否有更智能/更简洁的选项

const predicate = i => i % 2 === 0;
const predicatePassed = [];
const predicateFailed = [];

[1, 2, 3, 4].forEach(i => predicate(i) ? predicatePassed.push(i) : predicateFailed.push(i))

// predicatePassed === [2, 4]
// predicateFailed === [1, 3]
Run Code Online (Sandbox Code Playgroud)

javascript arrays functional-programming ramda.js

2
推荐指数
1
解决办法
109
查看次数