は、数字の配列を与えた関数を作成しなければならなかった練習問題の答えとして、ほとんどの出現数で数値を返し、複数の数値に最大値発生回数はマイナーなものを返します。これは私が行った実装ですが、私は髪の毛を引っ張って、この例で9の代わりに10を返す理由を考え出しています。配列内の数値の最大出現を取得する方法
trueを1< 9と評価しているようです。どうしましたか?あなたの第二のループにtypeof(x)
を置く
function maxOccurencies(arr) {
var aux = [], max = 0, final = null;
for (var i=0,t=arr.length; i<t; i++) {
aux[arr[i]] = (aux[arr[i]] || 0) + 1;
if (aux[arr[i]] > max) max = aux[arr[i]];
}
for (x in aux) {
if (aux[x] == max && (x < final || final == null)) {
final = x;
}
}
return final;
}
document.write(maxOccurencies([10,10,10,9,9,9,8,7,4,5,1]));
はい、 'for x in y'は、実際には数値ではなくキーである' x'の値を与えます。 'y [x]'に対しては使用できますが、他の計算では型を変換せずに使用することはできません。 – m69