Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

229
Vistas
Convierta valores de objetos JSON en claves en una matriz json

Aporte

 data = [ { "name": "AAA", "uuid": "111", "zone": "A"}, { "name": "BBB", "uuid": "222", "zone": "B"}, { "name": "CCC", "uuid": "333", "zone": "C"}, ]

Salida deseada

 data = [ { "AAA": {"uuid": "111", "zone": "A"}, "BBB": {"uuid": "222", "zone": "B"}, "CCC": {"uuid": "333", "zone": "C"}, } ]

Intenté esto,

 data = [ { "name": "AAA", "uuid": "111", "zone": "A"}, { "name": "BBB", "uuid": "222", "zone": "B"}, { "name": "CCC", "uuid": "333", "zone": "C"}, ]; data = data.map( o => new Object({"uuid": o.uuid, "zone": o.zone})); console.log(data);

da

 [ { uuid: "111", zone: "A" }, { uuid: "222", zone: "B" }, { uuid: "333", zone: "C" } ]

Quiero que el campo "nombre" sea la clave para cada objeto.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Las partes de la salida que corresponden a la entrada están todas dentro de un solo elemento en una matriz, por lo tanto, mapee dentro de una matriz literal. Extraiga la propiedad de name al realizar la asignación y devuelva un objeto cuya clave sea esa propiedad, y el valor es el resto de lo que hay en el objeto (con sintaxis de descanso).

 const input = [ { "name": "AAA", "uuid": "111", "zone": "A"}, { "name": "BBB", "uuid": "222", "zone": "B"}, { "name": "CCC", "uuid": "333", "zone": "C"}, ]; const output = [input.map(({ name, ...rest }) => ({ [name]: rest }))]; console.log(output);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Array#reduce es otra forma de iterar su matriz. Puedes crear un objeto con los nombres como claves.

 let data = [{ "name": "AAA", "uuid": "111", "zone": "A"}, { "name": "BBB", "uuid": "222", "zone": "B"}, { "name": "CCC", "uuid": "333", "zone": "C"}]; data = data.reduce((b,a) => ({...b, [a.name]: {"uuid": a.uuid, "zone": a.zone}}), {}); console.log(data);

Producción:

 { "AAA": { "uuid": "111", "zone": "A" }, "BBB": { "uuid": "222", "zone": "B" }, "CCC": { "uuid": "333", "zone": "C" } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar la sintaxis de desestructuración de objetos para lograr esto fácilmente.

Usando sus datos originales:

 let data = [ { "name": "AAA", "uuid": "111", "zone": "A" }, { "name": "BBB", "uuid": "222", "zone": "B" }, { "name": "CCC", "uuid": "333", "zone": "C" } ];

Cree un nuevo Objeto para contener nuestros datos reestructurados:

 let records = {};

Aquí desestructuramos cada objeto de datos asignando la propiedad de name a su propia variable y las propiedades restantes al nuevo Objeto r con el operador de propagación ( ... ). Luego podemos usar la notación de corchetes para asignar los datos al objeto de records por nombre:

 data.forEach(({ name, ...r }) => records[name] = r);

Si comprobamos el objeto de records :

 console.log(records); { AAA: { uuid: "111", zone: "A" }, BBB: { uuid: "222", zone: "B" }, CCC: { uuid: "333", zone: "C" } }

records no es una matriz y no se puede acceder a ella por índice.

 console.log(records[0]); // undefined

Pero ahora puede ser referenciado por clave:

 console.log(records['AAA']); // { uuid: "111", zone: "A" } console.log(records.BBB); // { uuid: "222", zone: "B" }

Si desea absolutamente sus datos como un objeto anidado dentro de una matriz:

 data = [records];
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda