Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!