私は配列を含むオブジェクトを持っています。私は勝利率で配列をソートしようとしていますが、次のコードは何もしないようです。私はcompareWinRate関数が呼び出されているのを見ることはできませんが、私はなぜそうではないのか分かりません。JavaScriptの比較機能が呼び出されていませんか?
let statistics = {
wins: 0,
kills: 0,
deaths: 0,
assists: 0,
heroes: [],
};
statistics.heroes[hero1] = { matches: 5, wins: 2 };
statistics.heroes[hero2] = { matches: 5, wins: 4 };
function compareWinRate(a, b) {
return ((b.wins/b.matches) - (a.wins/a.matches));
}
statistics.heroes.sort(compareWinRate);
sortステートメントの前後に配列を表示すると、それらは同じです。
'.sort'(および他の配列方法が)のみ数値配列プロパティ('配列[0]、配列[1] 'と連携しますなど)、名前付きのものは完全に無視します。したがって、 '.sort'の観点から、配列は空です。 – georg
'hero1'と' hero2'とは何ですか?どのように配列を表示しますか?完全なコードを入力してください。 – Bergi
'statistics.heroes [" hero1 "] = {matches:5、wins:2}と言うとき、あなたは配列を埋めるわけではなく、ヒーローオブジェクトにプロパティを追加するだけです。比較関数が呼び出されませんでした。だからあなたはGiladによって与えられた解決策を試すことができます – vinayakj