• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

153
Views
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 3 years ago · Juan Pablo Isaza
3 answers
Answer question

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 3 years ago · Juan Pablo Isaza Report

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 3 years ago · Juan Pablo Isaza Report

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 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error