1
我有一個包含數組的對象。我試圖按勝率對數組進行排序,但下面的代碼似乎沒有做任何事情。我看不到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