2017-06-30 14 views
-2

オブジェクトの配列をフィールドの頻度でソートし、その頻度のリーダーボードとして新しいリストを作成する方法はありますか?たとえば、私は最も出版された著者であった図書館で把握しようとしています。したがって、本の本から始まって、私は最も頻繁な著者の並べ替えられた配列を取得します。フィールドの周波数でオブジェクトの配列を並べ替える

おかげ

+3

は常にで、出力 –

+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); 
+0

ありがとう、私の実装ではうまくいくと思います。 – Victor

+0

@victor youre歓迎;)あなたが15の評判を集めた場合、あなたはアップヴォートで回答者に報酬を与えることができます... –

関連する問題