我有一個對象模型,看起來像這樣:JavaScript的自定義排序時,數組的部分沒有數據
MyObject = {
TheName: "",
OtherProps :....
}
我有這些對象的數組和我的自定義排序函數如下所示:
function SortArray() {
var CustomFunction;
var CustomSortAsc = function (a, b) {
return a['TheName'] - b['TheName'];
}
var CustomSortDsc = function (a, b) {
return b['TheName'] - a['TheName'];
}
if (SomeCondition) {
CustomFunction = CustomSortAsc;
} else {
CustomFunction = CustomSortDsc;
}
SomeArray.sort(CustomFunction);
}
SomeArray
在其中有大約200-300個對象,問題是有時對象有一個空的TheName
屬性。正因爲如此,這種排序似乎並不像預期的那樣工作。例如,如果有值,則按名稱排序,然後根據排序函數將所有沒有名稱的值。
這樣做的工作方式是什麼?感謝您的建議。
會像'return(a ['TheName'] || 0) - (b ['TheName'] || 0);'工作(因爲您使用'-',我假設值是數字)? – 2012-07-09 16:39:21
您正在使用'a - b'進行排序,這會導致大多數字符串出現'NaN'。如果兩者都是空字符串,您將得到一個合法值'0' – Esailija 2012-07-09 16:40:02
@Rocket:no,它們是字符串。 – frenchie 2012-07-09 16:48:29