Given an array of objects:
{ key: "a", value: 42 }, { key: "d", value: 28 }, { key: "c", value: 92 }, { key: "b", value: 87 }
and an array of keys:
["c", "a", "b", "d"]
Is there a ECMAScript function or a 3rd-party JavaScript library that lets you sort - in one line/function call - the first array of objects, to match the order of the keys specified in the second array, such that the result is:
{ key: "c", value: 92 }, { key: "a", value: 42 }, { key: "b", value: 87 }, { key: "d", value: 28 }
Other questions that provide a function or algorithm:
- Javascript - sort array based on another array - Stack Overflow
- javascript - How do I sort an array of objects based on the ordering of another array? - Stack Overflow
Similar/related questions:
I can't claim that this is the most efficient way, but you can use the
key
for each object as a key for properties in another object. Then simply access them by these keys.http://jsfiddle.net/WdehF/
Just use
indexOf
to convert the key to the correct order:Fiddle
If there are a lot of keys, then it would be advantageous to make a hash-map out of the array, like:
This makes the key-sorting lookup constant time rather than O(n). (Fiddle)
Great answers provided so far. Thought that the following may also be an alternative solution in plain JS: