使用lodash分组过滤器数据,并结合
问题描述:
我有输出像这样:使用lodash分组过滤器数据,并结合
{ 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()
没有运气。
答
这里有一个例子是链在一起的几个lodash功能:
_(data)
.map('diagnosis')
.countBy()
.toPairs()
.sortBy(_.last)
.reverse()
.take(3)
.map(_.head)
.value();
这里是发生了什么事情:
答
你可以试试这个解决方案,以及:
_(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();
这是光滑亚当。非常感谢! – JeffC