按字段的频率排序js对象数组

时间:2017-06-30 13:44:45

标签: javascript

我是否有可能通过字段的频率对对象数组进行排序,然后将新列表作为该频率的排行榜?例如,我正试图在一个图书馆中找出最多的作者,所以从一个原始的书籍数组开始,我得到了一个最频繁的作者的排序数组。

由于

1 个答案:

答案 0 :(得分:0)

我认为您的数据如下所示:

var books=[{author:"Steven",title:"sth"},...];

因此,您只需为每位作者存储图书计数:

var bookcountof={};

books.forEach(function(book){
 if(!bookcountof[book.author]) bookcountof[book.author]=0;
 bookcountof[book.author]++;//increase
});

获取图书的数量,例如史蒂文,你可以简单地做:

bookcountof["Steven"];

现在我们需要一个数组,以便我们可以排序:

var topauthors=Object.keys(bookcountof).map(name=>({name,count:bookcountof[name]}));

topauthors.sort((a,b)=>a.count-b.count);