Me gustaría reformatear los datos tomando una sección de una entrada JSON. Por ejemplo, tengo datos JSON:
{ "AXD:Condor": 12, "AXD:Pelican": 20, "GPR:Deer": 15, "GPR:Owl": 34 }
y me gustaría reformatearlo a algo como esto:
{ AXD:{ Condor: 12, Pelican:20 } GPR:{ Deer: 15, Owl: 34 } }
Me disculpo si esta pregunta es obvia o está mal redactada, soy bastante nuevo en el uso de JSON. Gracias por tomarse el tiempo para responder.
Usando Object.entries(data)
obtenemos una matriz con los pares clave-valor del objeto de data
. Luego iteramos a través de esta matriz usando reduce, donde [key, value]
es el par del objeto y a
es el acumulador cuyo valor inicial es un objeto vacío {}
(verifique el final de la función) y será el resultado.
Ahora, para cada iteración, dividimos nuestro valor clave y mantenemos la primera parte que queremos usar como nuestra nueva clave. Luego verificamos si el objeto acumulador ya contiene esa clave de una iteración anterior, y si no, la agregamos y le asignamos un objeto vacío. Por último, asignamos el antiguo par clave-valor dentro de esta clave recién asignada para que podamos tener el resultado anidado que queremos.
const data = { "AXD:Condor": 12, "AXD:Pelican": 20, "GPR:Deer": 15, "GPR:Owl": 34 } let res = Object.entries(data).reduce((a, [key, value]) => { let outerKey = key.split(':')[0]; if (!a[outerKey]) { a[outerKey] = {}; } a[outerKey][key] = value; return a; }, {}); console.log(res);