[英]Javascript - Issue with sort function on Opera 11.60 and IE 8
我試圖按那里的屬性對對象進行排序。 我在Opera和IE上的功能存在問題。 到現在為止,我已經在此階段調試了Opera上的問題:
在控制台中傳遞此代碼,然后按Shift + Enter。
var DataArray=["Other","Attitude","Attitude","Delivery/timings","General Performance","Personal Planning","Other"] DataArray=DataArray.sort(function(a,b) { return a<b; }); JSON.stringify(DataArray);
您應該獲得如下正確的結果:
[“個人規划”,“其他”,“其他”,“總體表現”,“交付/時間”,“態度”,“態度”]
現在以這種方式更改排序功能a> b,然后按enter + shift將其執行。
var DataArray=["Other","Attitude","Attitude","Delivery/timings","General Performance","Personal Planning","Other"] DataArray=DataArray.sort(function(a,b) { return a>b; }); JSON.stringify(DataArray);
我的結果是:
[“態度”,“交付/時間”,“態度”,“一般表現”,“其他”,“其他”,“個人計划”]
注意第一個,第二個和第三個值嗎?
如果在控制台“ Attitude” =“ Attitude”中執行此操作,則返回true ...
有任何想法嗎?
提前致謝。
編輯:和與IE部分:
碼:
var DataArray=['Other','Attitude','Attitude','Delivery/timings','General Performance','Personal Planning','Other'];
DataArray=DataArray.sort(function(a,b)
{
return a<b;
});
prompt('',DataArray);
結果(正確):個人計划,其他,其他,總體表現,態度,態度,交付/時間
碼:
var DataArray = ['其他','態度','態度','交付/時間','總體表現','個人規划','其他'];
DataArray=DataArray.sort(function(a,b)
{
return a>b;
});
prompt('',DataArray);
結果(不正確):態度,態度,其他,交付/時間,總體表現,其他,個人計划
解:
sortableArray=sortableArray.sort(function(a,b)
{
if(a.Category>b.Category)
{
return 1;
}
if(a.Category<b.Category)
{
return -1;
}
return 0;
});
要對數據進行降序排序,請使用reverse()函數。
感謝您的幫助。 特別是@nnnnnn
這對於任何特定的瀏覽器而言都不是問題,而對於未閱讀.sort()
函數文檔的情況而言 ,則是一個問題。 您傳遞給.sort()
的回調不應該返回布爾值,而應該返回一個數字:
您的排序函數返回一個布爾值,而它應該返回一個整數。 雖然1
可以混淆為true
而0
可以混淆為false
,但這不應該是您依賴代碼邏輯的東西。 該函數應具有3個返回情況:
< 0
如果a > b
> 0
如果a < b
a == b
== 0
所以你應該像這樣對數組進行排序:
DataArray = DataArray.sort(function(a,b){
return a>b ? 1 : a<b ? -1 : 0;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.