在這種環境下,我只能訪問內在的Javascript函數,所以無法加載外部庫。Javascript陣列排序多個鍵clobber以前排序?
當試圖用3個鍵(內部,中間和外部)排序時,只有我的最後一種似乎被保留下來。
function Claim(claimNumber, lastName, claimStatus, record)
{
this.claimNumber = claimNumber;
this.lastName = lastName;
this.claimStatus = claimStatus;
this.record = record;
}
function sortLastName(a, b) {
var o1 = a["lastName"].toUpperCase();
var o2 = b["lastName"].toUpperCase();
if (o1 < o2) return -1;
if (o1 > o2) return 1;
return 0;
}
function sortClaimNumber(a, b) {
var o1 = a["claimNumber"].toUpperCase();
var o2 = b["claimNumber"].toUpperCase();
if (o1 < o2) return -1;
if (o1 > o2) return 1;
return 0;
}
function sortClaimStatus(a, b) {
var o1 = ("00" + a["claimStatus"].toUpperCase()).substr(-2);
var o2 = ("00" + b["claimStatus"].toUpperCase()).substr(-2);
if (o1 < o2) return 1;
if (o1 > o2) return -1;
return 0;
}
var claimListArray = buildClaimList(record);
claimListArray.sort(sortClaimStatus);
claimListArray.sort(sortClaimNumber);
claimListArray.sort(sortLastName);
輸出應該像(姓氏遞增,claimnumber遞增,claimstatus DESC):
AARDVARK 111222A 15
AARDVARK 111222A 6
AARDVARK 111222A 1
AARDVARK 222555C 8
AARDVARK 222555C 4
BANKS 123132Z 78
而是看起來像:
AARDVARK 111222A 15
AARDVARK 222555C 4
AARDVARK 111222A 1
AARDVARK 222555C 8
AARDVARK 111222A 6
BANKS 123132Z 78
也就是說,只有姓氏排序被保留下來,就好像前兩種排序沒有發生一樣。 是否有關於數組和排序的東西,我忽略了忽略以前的排序?
有沒有更好的方法?
這個完美的工作! – 2012-07-21 15:18:17