簡體   English   中英

如何使用Ramda計算數組中的重復項?

[英]How do I count duplicates in an array with Ramda?

我有一個重復值的數組,我需要使用ramda.js找出每個值在數組中出現多少次。

這是我的數組: [2013、2013、2013、2014、2014、2014、2014、2015、2015、2015、2015、2015、2015、2015、2016、2016、2016、2016、2016、2017、2017、2017]

這就是我要擺脫的: [3、4、7、5、3]

這是一個在純JavaScript中可能如何工作的示例。

function count (arr) {
  const counts = {}
  arr.forEach((x) => { counts[x] = (counts[x] || 0) + 1 })
  return Object.values(counts)
}

假設(如您的代碼中)重復對象不必按順序排列,則可以使用R.countBy()R.values()獲得相同的結果:

 const { pipe, countBy, identity, values } = R; const arr = [2013, 2013, 2013, 2014, 2014, 2014, 2014, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 2017] const countDupes = pipe( countBy(identity), values ) console.log(countDupes(arr)); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script> 

暫無
暫無

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

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