配列を指定して、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) にアクセスしてください。