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