我有这样的输出:
{ diagnosis: 'Flu' }
{ diagnosis: 'Down Syndrome' }
{ diagnosis: 'Down Syndrome' }
{ diagnosis: 'Epilepsy' }
{ diagnosis: 'Epilepsy' }
{ diagnosis: 'Muscle Spasm' }
{ diagnosis: 'Muscle Spasm' }
{ diagnosis: 'Epilepsy' }
{ diagnosis: 'Muscle Spasm' }
{ diagnosis: 'Nervousness' }
{ diagnosis: 'Weezing' }
{ diagnosis: 'Unknown' }
您会注意到Epilepsy
显示4次,Muscle Tension and Spasm
显示3次,Crazy Guy Syndrome
显示2次,其余只显示一次。我想创建一个包含3种最常见疾病的数组,例如:['Epilepsy', 'Muscle Tension and Spasm', 'Crazy Guy Syndrome']
并忽略其余的疾病。我想用lodash做这件事。有什么建议?目前我正在使用_.groupBy()
而没有运气。
答案 0 :(得分:4)
这是一个将几个lodash函数链接在一起的例子:
_(data)
.map('diagnosis')
.countBy()
.toPairs()
.sortBy(_.last)
.reverse()
.take(3)
.map(_.head)
.value();
这是&#39>正在进行的事情:
答案 1 :(得分:1)
你也可以尝试这个解决方案:
<强> DEMO 强>
_(data)
.countBy('diagnosis') // counts by diagnosis key
.invert() // inverts count value and diagnosis key for sorting
.map() // get all diagnosis values
.reverse() // reverse
.take(3) // take the top 3
.value();