この環境では、組み込みのJavascript関数にしかアクセスできないため、外部ライブラリをロードできません。
内側、中央、外側の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);
出力は次のようになります(lastname asc、claimnumber asc、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
つまり、最初の2つの並べ替えが行われなかったかのように、lastNameの並べ替えのみが保持されます。以前の並べ替えを無視する、欠落している配列と並べ替えについて何かありますか?
より良いアプローチはありますか?