Elw*_*wyn 5 javascript angularjs lodash
如果有这个数组:
[
{
"name" : "lala",
"source_ip" : "10.10.10.10"
},
{
"name" : "lulu",
"source_ip" : "10.10.10.11"
},
{
"name" : "lolo",
"source_ip" : "10.10.10.10"
}
]
Run Code Online (Sandbox Code Playgroud)
我想按事件分组并使用Lodash对其进行排序以获得此结果:
[
{
"source_ip" : "10.10.10.10",
"count" : 2
},
{
"source_ip" : "10.10.10.11",
"count" : 1
},
]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
app.filter('top10', function() {
return function(incidents) {
return _.chain(incidents)
.countBy("source_ip")
.value();
};
});
Run Code Online (Sandbox Code Playgroud)
我也试过减少之前然后使用grouBy但它不起作用.
非常感谢.
这将帮助您:
_(array)
.countBy("source_ip")
.map(function(count, ip) { return { count: count, source_ip: ip }})
.sortBy('-count')
.value()
Run Code Online (Sandbox Code Playgroud)
笔记:
sortBy('-count') 按属性反向排序map 可以迭代对象并传递给函数键,因此您可以从对象生成数组_() 符号表示 _.chain()更新 2017.01.20
我们甚至可以做得更优雅:
_(array)
.countBy("source_ip")
.invert()
.sortBy('-count')
.value()
Run Code Online (Sandbox Code Playgroud)