Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

203
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda