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 } }