Digamos que tenemos lo siguiente:
let x = [ {"color": "blue", "cat": "eec" }, {"color": "red", "cat": "vbs" }, {"color": "black", "cat": "asd" }, ]¿Cómo puedo ordenar esto por gato? para que luego pueda hacer algo como
let y = sorted.asd.color; or y = sorted[asd][color];nota: el gato es único
Gracias
Puedes usar .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); o .map y 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);Podrías intentar algo como esto:
const x = [ {"color": "blue", "cat": "eec" }, {"color": "red", "cat": "vbs" }, {"color": "black", "cat": "asd" }, ] function sortByCat(array) { let cats = {}; for (let i = 0; i < array.length; i++) { let currentObject = array[i]; cats[currentObject.cat] = currentObject; } return cats; } let sorted = sortByCat(x); let y = sorted.asd.color; y = sorted['asd']['color'];