2012-10-10 65 views
3

我知道Chrome瀏覽器的排序問題不穩定,但是在排序字符串時如何解決這個問題讓我感到茫然。Chrome瀏覽器 - Javascript排序不一致

myArray.sort(function(a, b){ 
     var typeA=a.toLowerCase(); 
     var typeB=b.toLowerCase(); 

     return (typeA < typeB) ? -1 : (typeA > typeB) ? 1 : 0; 
     }); 

在FF和Safari中正常工作,但在Chrome中仍然返回不正確的順序。也就是說,如果typeA == typeB返回0,那麼Chrome並不尊重它...它仍然選擇移動它。有沒有修復那裏處理排序字符串?

+0

你可以通過實現你自己的排序算法而不是使用'array.sort()'來「解決」這個問題。但我不確定是否有辦法讓'array.sort()'獨立工作。 – SamYonnou

+2

'myArray'的內容是什麼? –

+0

就像編碼註釋:不要誤解我的意思,我喜歡三元運算符'?',但我同意那些相信它不應該被測試的人。現實生活中不是代碼高爾夫,不要害怕將它分成'if ... else if else'塊。 –

回答

2

JS規範不要求排序算法穩定,所以你不能指望。

解決不穩定排序問題的唯一確定方法是手動編碼不同的穩定算法或添加一個額外的唯一鍵進行排序以保證比較函數始終將兩個元素視爲彼此更大或更小,但從來沒有平等。原始數組索引會做。