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

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

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 Report

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 Report

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 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!