我有一个数组数组,想要编写一个函数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 个列表来压缩。
是否有一种简洁的方法可以实现与以下相同的结果,但是:
我想过使用 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)