Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function sortByKeys(arr, ...keys) {
- // sort arr by keys
- // keys can be:
- // 1. property name
- // 2. -property name
- // 3. function arr object => value
- let keyToInt = (e1,e2,k, factor) => {
- let v1 = k(e1);
- let v2 = k(e2) ;
- return v1>v2 ? 1*factor : (v1==v2 ? 0 : -1*factor)
- };
- let keysToInt = (e1, e2, keys) => {
- for (let k of keys) {
- let kPred = null
- let factor = 1;
- if (typeof k == 'string') {
- if (k[0] == '-') {
- kPred = e => e[k.substr(1)];
- factor = -1;
- } else {
- kPred = e => e[k];
- }
- } else {
- kPred = k
- }
- let res = keyToInt(e1,e2,kPred, factor);
- if (res !=0) {
- return res;
- }
- }
- return 0;
- }
- return arr.sort((e1,e2) => keysToInt(e1,e2,keys));
- }
Add Comment
Please, Sign In to add comment