ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の興味深い質問: 配列内で最大出現頻度を持つ要素を見つけます

JavaScript の興味深い質問: 配列内で最大出現頻度を持つ要素を見つけます

黄舟
リリース: 2017-02-04 15:45:05
オリジナル
1534 人が閲覧しました

配列を指定して、highestRank(arr) 関数に渡し、配列内で最も頻度が高い要素を返します。

出現頻度が最も高い要素が複数ある場合は、値が最も大きい要素を返します。

例は次のとおりです:

arr = [12, 10, 8, 12, 7, 6, 4, 10, 12];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 12, 7, 6, 4, 10, 12, 10];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 8, 3, 3, 3, 3, 2, 4, 10, 12, 10];  
highestRank(arr) //=> returns 3
ログイン後にコピー

このタイプの頻度検出の場合、統計を作成して各数値がどのくらいの頻度で出現するかを確認するのが最善です。


次に、最も頻度が高いもの、または数値のグループをフィルターで除外します。

最後に、この一連の数値から最大のものを見つけて返します。

私は個人的には、効率的で列挙が簡単なハッシュ オブジェクトを使用して問題を解決することを好みます。

並べ替えも可能であるはずですが、効率は確実に低くなります

function highestRank(arr){  
    var hash = {};  
    var highest = 0;  
    var highestArray = [];  
    for(var i=0;i<arr.length;i++){  
        var cur = arr[i];  
        if(hash[cur]){  
            hash[cur] = 1 + hash[cur];  
        }  
        else{  
            hash[cur] = 1;  
        }  
        if(hash[cur] > highest){  
            highest = hash[cur];  
        }  
    }  
    for(var j in hash){  
        if(hash.hasOwnProperty(j)){  
            if(hash[j] === highest){  
                highestArray.push(j);  
            }  
        }  
    }  
    return Math.max.apply(null,highestArray);  
}
ログイン後にコピー

上記は JavaScript の興味深い質問です: 配列内で最も出現頻度が高い要素の内容を見つけます。その他の関連内容については、注意してください。 PHP 中国語 Web サイト (www.php.cn) にアクセスしてください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート