JavaScriptで以下のような配列があります。
lang
1var lists = ["tokyo", "osaka", "nagoya", "tokyo", "okinawa", "tokyo", "osaka"]; 2
これを重複する要素と重複しない要素を全部、また重複する場合は何個重複しているか、1つだけなら1、とカウントしたいです。
欲しい結果
lang
1 2tokyo 3 3osaka 2 4nagoya 1 5okinawa 1 6
やってみたこと
ネットで検索してみると、重複の有無を調べる方法、重複を削除して新しい配列を作成する方法、重複のみで新しい配列を作成する方法は分かったのですが、ここから先、目的とすることができません。
方法1
lang
1var array = []; // 新しい配列を作成 2 3array = lists.filter(function(val, index, self){ 4 return self.indexOf(val) === index; 5}); 6console.log(array); 7 8--> [ 'tokyo', 'osaka', 'nagoya', 'okinawa' ] // 重複を削除できた 9
方法2
lang
1var array2 = []; // 新しい配列を作成 2for(var i = 0; i < lists.length; i++){ 3 if( lists.indexOf( lists[i] ) === i ){ 4 array2.push( lists[i] ); 5 } 6} 7 8console.log(array2); 9--> [ 'tokyo', 'osaka', 'nagoya', 'okinawa' ] // 重複を削除できた 10
カウンター変数cntを作って、if文で条件一致したらcnt++などとやればいいのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/30 14:19
2017/10/31 05:35 編集
2017/11/01 10:22