algorithm - What is the most compact way in JavaScript to sort an array of objects by a particular key, where the sorting order is defined in an array? -


this question has answer here:

here's mean. suppose have array of objects

var objs = [ { foo: 5, bar: "something"},               { foo: 4912, bar: "blah" },               { foo: -12, bar: "hehe" } ]; 

and array defines ordering on bar values,

var arr = ["blah", "something", "hehe"] 

does javascript have way of getting version of objs to

[ { foo: 4912, bar: "blah" },    { foo: 5, bar: "something"}   { foo: -12, bar: "hehe" } ]; 

???

the best way know like

objs.sort(function(x,y){     var ix = arr.indexof(x),          iy = arr.indexof(y);     if(ix<iy) return -1;     else if(ix==iy) return 0;     else return 1; }); 

but i'm wondering if there's way more compact.

you can refactor sort function:

objs.sort(function(x,y){     var ix = arr.indexof(x),          iy = arr.indexof(y);     return ix-iy; }); 

also, better performance may want rid of indexof functions, , load sort array hash:

var arr = {     "blah" :0,     "something":1,      "hehe":2}; 

and sorting function this:

objs.sort(function(x,y){     return arr[x.bar]-arr[y.bar]; }); 

Comments

Popular posts from this blog

wordpress - (T_ENDFOREACH) php error -

Export Excel workseet into txt file using vba - (text and numbers with formulas) -

Using django-mptt to get only the categories that have items -