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