Files
hudozka/src/utils/sort.js
T
2017-10-15 01:40:53 +03:00

27 lines
487 B
JavaScript

export function sortByPattern(list, pattern, map) {
let weight = i => {
const index = pattern.indexOf(map(i))
return index > -1 ? pattern.length - index : 0
}
return sortByWeight(list, weight)
}
export function sortByWeight(list, fn) {
return list
.map(i => [fn(i), i])
.sort((a, b) => b[0] - a[0])
.map(i => i[1])
}
export function sortBy(fn) {
return (i1, i2) => {
let t1 = fn(i1)
let t2 = fn(i2)
if (t1 < t2) return 1
if (t1 > t2) return -1
return 0
}
}