我有一個名爲countKeys
的字符串數組,其中包含的值與對象的鍵相對應,而該對象又包含一個整數。Javascript sort()使用參數作爲屬性選擇器進行比較會在Chrome上產生奇怪的結果
我試圖根據對象中的鍵值(count
),用鍵(countKeys
)對數組進行排序。
陣列與(string)鍵名:
var countKeys = ["0","6","8","10","12","13","14","17","18","19","22","27","30","35","39","48","50","51","55","58","61","66","76","88","94","107","108","109"];
對象一個整數,我試圖來比較:
var count = {"0":5,"6":1,"8":3,"10":3,"12":2,"13":3,"14":3,"17":3,"18":2,"19":2,"22":2,"27":1,"30":1,"35":1,"39":1,"48":1,"50":1,"51":2,"55":2,"58":2,"61":1,"66":1,"76":2,"88":1,"94":1,"107":1,"108":1,"109":1};
我用下面的排序功能:
countKeys.sort(function(a, b) {
return count[b] - count[a];
});
我期待以下結果爲countKeys:
["0","8","10","13","14","17","12","18","19","22","51","55","58","76","6","27","30","35","39","48","50","61","66","88","94","107","108","109"]
在Firefox和IE瀏覽器,這個工作,在Chrome但是,我得到意想不到的結果:
["0","10","13","14","17","8","76","12","19","22","51","55","58","18","6","48","50","109","27","30","61","66","35","88","94","107","108","39"]
我如何在Chrome相同的結果,我在其他瀏覽器上?
你的排序函數沒有指定如果值相等,它應該使用數組索引作爲次要排序。 [JS排序不穩定](https://stackoverflow.com/questions/3026281/array-sort-sorting-stability-in-different-browsers) – James