Lets say we have the following:
let x = [ {"color": "blue", "cat": "eec" }, {"color": "red", "cat": "vbs" }, {"color": "black", "cat": "asd" }, ]
how can I sort this by cat? so that I can then do something like
let y = sorted.asd.color; or y = sorted[asd][color];
note: cat is unique
Thanks
Advertisement
Answer
You can use .reduce
:
let x = [ {"color": "blue", "cat": "eec" }, {"color": "red", "cat": "vbs" }, {"color": "black", "cat": "asd" }, ] const sorted = x.reduce((acc, el) => { acc[el.cat] = el; return acc; }, {}); const y = sorted.asd.color; console.log(y);
or .map
and Object.entries
:
let x = [ {"color": "blue", "cat": "eec" }, {"color": "red", "cat": "vbs" }, {"color": "black", "cat": "asd" }, ] const sorted = Object.fromEntries(x.map(el => [el.cat, el])); const y = sorted.asd.color; console.log(y);