我注意到當比較函數返回0
時,IE9排序順序正在改變元素順序。IE9的JavaScript排序順序...爲什麼?
請參見:
var myarray=[
{id:1,val:0},
{id:2,val:0},
{id:3,val:7},
{id:4,val:41}
];
myarray.sort(function(a,b){return a.val - b.val});
for(var i in myarray)
{
console.log(myarray[i].id);
}
目前的Chrome,Firefox,Opera和Safari瀏覽器的穩定版本得到了以下的輸出:1 2 3 4
。
IE7和IE8的輸出相同。
IE9輸出爲:2 1 3 4
爲什麼?這是正常的嗎?
您使用的是哪個版本的IE9?這可能是一個較新的測試版已經改變了這種行爲。 –
只需按值將其作爲主要進行排序,並在'0'的情況下按ID進行排序。 – Raynos
你確定它是'sort'而不是'for-in'嗎? 'for-in'不能保證任何特定的順序,所以它不應該用於數組。 – user113716