当属性不一致时如何基于属性对 JavaScript 对象列表进行排序
我们有一个包含各种对象的数组。该数组上的几个对象具有 date 域(它基本上是从服务器返回的字符串,而不是 date 对象),而其他对象则该域为 null。
要求是,我们必须将没有 date 的对象显示在顶部,而带有 date 的对象需要在它们之后按 date 域排序后显示。
此外,对于没有 date 的对象,需要按字母顺序进行排序。
示例
const sorter = ((a, b) => {
if (typeof a.date == 'undefined' && typeof b.date != 'undefined') {
return -1;
}
else if (typeof a.date != 'undefined' && typeof b.date == 'undefined') {
return 1; }
else if (typeof a.date == 'undefined' && typeof b.date == 'undefined') {
return a.name.localeCompare(b.name);
}
else if (a.date == null && b.date != null) {
return -1;
}
else if (a.date != null && b.date == null) {
return 1;
}
else if (a.date == null && b.date == null) {
return 0;
}
else {
var d1 = Date.parse(a.date);
var d2 = Date.parse(b.date);
return d1 - d2;
}
});
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP