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

204
Vistas
Cómo crear una nueva matriz para cada clave única en una matriz de objetos

Tengo una serie de objetos como este:

 originalArray = [ { "16": { "id": 23, "data": "11",}, "17": { "id": 28, "data": "25",},..., "header": "Row 2","id": 6}, { "16": { "id": 23, "data": "AA",}, "17": { "id": 28, "data": "!!",},..., "header": "Row 2","id": 6}, .... ]

Donde cada elemento de la matriz es un objeto y dentro de cada objeto hay varios pares clave-valor. Los pares clave-valor (aparte de los dos últimos elementos con encabezado e id de claves) vienen en el formato

 "number": {"id": x, "data" = "something"}

Puede haber múltiples objetos y múltiples pares clave-valor dentro de la matriz y las claves son consistentes entre cada objeto, es decir, si hay una clave en el primer objeto, existe en todos los objetos dentro de la matriz, por ejemplo, "16" y "17". "

Escribí un método para obtener los datos de esa matriz así:

 createArrays() { this.originalArray.forEach(row => { Object.entries(row).forEach(([key, value]) => { console.log(key, value['data']) }) }); }

Esto me permite obtener la clave y el valor de datos asociado en cada objeto. Para cada clave (aparte del encabezado y la identificación), ¿cómo puedo crear una nueva matriz y completarla con el valor de esa clave?

Resultado deseado basado en originalArray:

 gridData_16 = ["11", "25", ...] gridData_17 = ["AA", "!!", ...] ....

Explicación: obtenemos nuevas matrices que comienzan con gridData_ y la última parte proviene de la clave en originalArray. Cada valor en la matriz proviene del valor de datos para cada clave con el mismo número. Por ejemplo, en originalArray, tenemos la clave "16" y los "datos" que son iguales a "11" y "25" para cada objeto de la matriz, por lo que completamos gridData_16 = ["11", "25", ... ]

Sé que puedo crear una matriz fuera de Object.keys y simplemente completar esa única matriz con todos los datos usando un método .push. Sin embargo, esa no es la estructura correcta y no estoy seguro de cómo avanzar:

 createArrays() { this.gridData = [] this.originalArray.forEach(row => { Object.entries(row).forEach(([key, value]) => { this.gridData.push(value['data']) }) }); }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay un enfoque que usa reduce() con Object.entries() para crear un objeto de resultado que agrupa los valores de datos por clave:

 const array = [ {"16": {"id": 23, "data": "11"}, "17": {"id": 28, "data": "25"}, "header": "Row 2", "id": 6}, {"16": {"id": 23, "data": "AA"}, "17": {"id": 28, "data": "!!"}, "header": "Row 2", "id": 6} ]; const result = array.reduce((a, v) => { Object.entries(v).forEach(([k, v]) => { if (k.match(/[0-9]+/)) { a[k] = a[k] || []; a[k].push(v.data); } }); return a; }, {}); console.log(result);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede crear un objeto con las propiedades deseadas y agregar los valores allí, luego simplemente puede cambiarlo a matriz si lo necesita en ese formato

 const originalArray = [ { "16": { "id": 23, "data": "11",}, "17": { "id": 28, "data": "25",}, "header": "Row 2","id": 6}, { "16": { "id": 23, "data": "AA",}, "17": { "id": 28, "data": "!!",}, "header": "Row 2","id": 6} ] function createArrays(originalArray) { const gridData = {} originalArray.forEach(row => { Object.entries(row).forEach(([key, value]) => { if(value.data){ gridData['gridData_' + key] = gridData['gridData_' + key] || [] gridData['gridData_' + key].push(value.data) } }) }); return gridData } console.log(createArrays(originalArray))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente puede lograr esto sin muchas modificaciones en su código existente.

Demostración en vivo :

 // Input Array let originalArray = [{ "16": { "id": 23, "data": "11" }, "17": { "id": 28, "data": "25" }, "header": "Row 2", "id": 6 }, { "16": { "id": 23, "data": "AA" }, "17": { "id": 28, "data": "!!" }, "header": "Row 2", "id": 6 }]; // Declaring an empty object to assignt the result. let obj = {}; // Iterating original array to access the object enteries and get the values. originalArray.forEach(row => { Object.entries(row).forEach(([key, value]) => { if (!isNaN(key)) { if (!obj[key]) { obj[key] = []; } obj[key].push(value.data) } }) }); // Output console.log(obj);

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