簡體   English   中英

如何使用Ramda在輸入數組上映射謂詞來獲取兩個數組

[英]How to get two arrays by mapping a predicate over an input array with 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]

您可以使用R.partition

 const predicate = i => i % 2 === 0; const [predicatePassed, predicateFailed] = R.partition(predicate)([1, 2, 3, 4]); console.log(predicatePassed); console.log(predicateFailed); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM