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

Javascript 如何通过使用Ramda在输入数组上映射谓词来获得两个数组,javascript,arrays,functional-programming,ramda.js,Javascript,Arrays,Functional Programming,Ramda.js,是否有一种简洁的方法来实现与以下相同的结果,但: 无突变 无需多次迭代输入数组 使用Ramda(最好) 我曾考虑使用reduce来更新一个包含已通过/失败数组的累加器对象,但我不确定是否有一个更智能/更简洁的选项 const predicate = i => i % 2 === 0; const predicatePassed = []; const predicateFailed = []; [1, 2, 3, 4].forEach(i => predicate(i) ? p

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

  • 无突变
  • 无需多次迭代输入数组
  • 使用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]
您可以使用:

const谓词=i=>i%2==0;
const[predicatePassed,predicateFailed]=R.partition(谓词)([1,2,3,4]);
console.log(predicatePassed);
console.log(谓词化)