fix: stable sort for undefined keys, fixes #191

This commit is contained in:
harttle
2020-03-05 02:04:58 +08:00
parent 61dac49b04
commit f57156bccd
5 changed files with 48 additions and 13 deletions
+13
View File
@@ -1,6 +1,7 @@
import { Drop } from '../drop/drop'
const toStr = Object.prototype.toString
const toLowerCase = String.prototype.toLowerCase
/*
* Checks if value is classified as a String primitive or object.
@@ -127,3 +128,15 @@ export function changeCase (str: string): string {
export function ellipsis (str: string, N: number): string {
return str.length > N ? str.substr(0, N - 3) + '...' : str
}
// compare string in case-insensitive way, undefined values to the tail
export function caseInsensitiveCompare (a: any, b: any) {
if (a == null && b == null) return 0
if (a == null) return 1
if (b == null) return -1
a = toLowerCase.call(a)
b = toLowerCase.call(b)
if (a < b) return -1
if (a > b) return 1
return 0
}