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

138
Visualizações
¿Cómo convierto una matriz anidada en una matriz 'con clave' en JavaScript?

Tengo una matriz anidada que se ve así:

[["Organisation","ID","Name"],["ACME","123456","Bart Simpson"],["ACME","654321","Ned Flanders"],["ACME","1234","Edna Kabappel"],["Yahoogle","666666","Bon Scott"],["Yahoogle","99999","Neil Young"],["Yahoogle","111111","Shania Twain"]]

El primer valor de cada matriz es el nombre de una organización a la que pueden pertenecer un ID y un nombre.

Estoy tratando de encontrar la forma más sencilla de agrupar todas las instancias en las que una identificación y un nombre pertenecen a la misma empresa, bajo una 'clave'.

Entonces, lo anterior resultaría en algo como esto:

 { "ACME": [ { "ID": 123456, "Name": "Bart Simpson" }, { "ID": 654321, "Name": "Ned Flanders" }, { "ID": 1234, "Name": "Edna Kabappel" } ], "Yahoogle": [ { "ID": 666666, "Name": "Bon Scott" }, { "ID": 99999, "Name": "Neil Young" }, { "ID": 111111, "Name": "Shania Twain" } ] }

He estado jugando con bucles for pero termino con muchas líneas de código, tratando de detectar cuándo el nombre de la empresa es diferente del anterior y me estoy metiendo en un verdadero lío con las cosas.

He buscado mucho aquí tratando de encontrar algo similar, pero no he tenido suerte.

Recién comencé a codificar nuevamente para el interés de la persona después de aproximadamente 18 años y soy muy novato nuevamente.

Gracias de antemano por cualquier ayuda.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Usando Array.reduce . Por favor, compruebe si esto funciona para usted. En el siguiente enfoque, la ID y el Name están codificados de forma rígida. Puede intentar escribir un enfoque dinámico genérico que maneje cualquier cantidad de parámetros como ID, nombre, edad, etc.

 const myArray = [ ["Organisation", "ID", "Name"], ["ACME", "123456", "Bart Simpson"], ["ACME", "654321", "Ned Flanders"], ["ACME", "1234", "Edna Kabappel"], ["Yahoogle", "666666", "Bon Scott"], ["Yahoogle", "99999", "Neil Young"], ["Yahoogle", "111111", "Shania Twain"] ]; const obj = myArray.reduce((acc, value, index) => { if (index === 0) return acc; const key = value[0]; if (!acc[key]) { acc[key] = []; } acc[key].push({ ID: value[1], Name: value[2] }); return acc; }, {}); console.log(obj);

about 4 years ago · Juan Pablo Isaza Relatório

0

muchas soluciones para llegar al mismo resultado, una que usa lambda y reduce: esta es una solución genérica, solo adapte el empuje de salida para construir su json final.

 const datas = [ ["Organisation", "ID", "Name"], ["ACME", "123456", "Bart Simpson"], ["ACME", "654321", "Ned Flanders"], ["ACME", "1234", "Edna Kabappel"], ["Yahoogle", "666666", "Bon Scott"], ["Yahoogle", "99999", "Neil Young"], ["Yahoogle", "111111", "Shania Twain"] ]; const titles = datas.shift() const groupBy = (x,f)=>x.reduce((a,b)=>((a[f(b)]||=[]) .push({[titles[1]]:b[1], [titles[2]]:b[2]}),a),{}); const result = groupBy(datas, v => v[0]) console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

Para lograr lo que desea, puede seguir los siguientes pasos:

  1. Cree un objeto para almacenar su resultado.
  2. Mientras ejecuta el ciclo, debe verificar si el nombre de la organización existe como una clave en el objeto y agregarlo si no lo hace, inicializándolo en una matriz vacía. Luego inserte el resultado que desea almacenar en esa matriz.

A continuación se muestra una implementación de muestra, asumiendo que sus datos se almacenan en data :

 var result = {}; for(var i=1; i < data.length; i++){ if(!result.hasOwnProperty(data[i][0])){ result[data[i][0]] = []; } result[data[i][0]].push({ "ID": data[i][1], "Name": data[i][2]}); }
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