使用lodash对过滤数据进行分组并合并
Using lodash to group filter data and combine
我有这样的输出:
{ 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();
我有这样的输出:
{ 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();