[英]Knockout sort - null values last
我有一個類似於下面的observableArray
:
self.people = ko.observableArray([
{ firstName: 'Albert', lastName: 'Woods', number: 2 },
{ firstName: 'Barry', lastName: 'Vincent', number: 4 },
{ firstName: 'Jason', lastName: 'Xavier', number: null },
{ firstName: 'Dean', lastName: 'Zebekiah', number: 1 },
{ firstName: 'Marty', lastName: 'Woods', number: 5 },
{ firstName: 'Bill', lastName: 'Vincent', number: 3 },
{ firstName: 'Chris', lastName: 'Jordan', number: null },
{ firstName: 'Ed', lastName: 'Young', number: null },
{ firstName: 'Dave', lastName: 'Zebekiah', number: 5 }
]);
我基於兩個值進行排序這- number
,這不是唯一的,那么lastname
(我明白這可以在速記寫,我只是在做它像這樣為現在的可讀性):
self.people.sort(function (a, b) {
if (a.number == b.number) {
if (a.lastName < b.lastName) {
return -1;
} else if (a.lastName > b.lastName) {
return 1;
} else {
return 0;
}
} else {
if (a.number < b.inumberd) {
return -1;
} else if (a.number > b.number) {
return 1;
} else {
return 0;
}
}
});
這一切工作正常,但我想有一個所有對象number
的值null
是名單上的最后一個項目,而不是第一個。 實現此目標的最佳方法是什么?
我認為我需要執行以下操作:
if (a.number = null){
return 1;
}
if (b.number = null){
return 0;
}
但是,這樣做的問題在於,它不再使用lastName
作為相關對象的次要排序術語。
這是一個jsfiddle供參考: http : //jsfiddle.net/nimaek/7tsfdfxq/
謝謝。
在您的小提琴中嘗試以下操作:
if (a.number == null && b.number){
return 1;
}
if (b.number == null && a.number){
return -1;
}
如果b.number == null
a.number == null
和b.number == null
,它將比較名稱。 如果其中只有一個為空,則將其在列表中向下移動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.