我想按枚举,然后按数字,然后按日期对数组进行排序。当我使用枚举和数字进行处理时,它似乎可以正常工作,但是当我在末尾加上日期时,一切都会变得混乱。
这是我的代码:
enum myType {
high,
medium,
low
}
myArray.sort((a, b) =>
myType[a.type] - myType[b.type] ||
a.classification - b.classification ||
new Date(a.time) > new Date(b.time)
? -1
: 1
);
但是,这似乎是相反的意思,它按照类型从低到高,从高到低的相反顺序进行排序。我们该如何处理?
更新:日期将像这样传递:2017-07-02T14:59:55.711Z
答案 0 :(得分:4)
在不知道time
样式的情况下,您需要包装三元数以防止读取该三元数的所有表达式。
myArray.sort((a, b) =>
myType[a.type] - myType[b.type] ||
a.classification - b.classification ||
(new Date(a.time) > new Date(b.time)
? -1
: 1)
);
通过使用ISO 8601兼容的字符串,您可以与String#localeCompare
进行字符串比较。
myArray.sort((a, b) =>
myType[a.type] - myType[b.type] ||
a.classification - b.classification ||
a.time.localeCompare(b.time)
);