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

158
Vistas
Comparación entre una matriz y una matriz de matrices para insertar claves faltantes

Estoy tratando de crear una comparación entre una matriz de claves y una matriz de matrices. La matriz de matriz contiene los datos de la siguiente manera:

 const data = [ [["id", 1], ["name", "somethign"], ["age", 20]], [["id", 20], ["name", "somethign"]], [["id", 9], ["age", 10]] ]

Una matriz con claves, que siempre tendrá todas las claves que necesito.

 const keys = [ "id", "name", "age", "nothing" ]

Pero como puede ver en la matriz de datos, no siempre todas las claves vienen en la matriz, lo que estaba tratando de hacer era hacer una comparación entre ambas matrices y agregar la clave que falta en la matriz de datos (en orden) como indefinida , por ejemplo (resultado final):

 const data = [ [["id", 1], ["name", "somethign"], ["age", 20], ["nothing", undefined]], [["id", 20], ["name", "somethign"],["age", undefined] ["nothing", undefined]], [["id", 9], ["name", undefined], ["age", 10], ["nothing", undefined]] ]
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

  1. Use map() para obtener una lista de claves existentes (índice 0: d.map(x => x[0]) )
  2. Use filter() para obtener la diferencia entre las keys y las claves existing
  3. Bucle sobre las llaves que faltan
  4. Agregue la matriz deseada a la matriz de datos para cada clave faltante

 const data = [ [["id", 1], ["name", "somethign"], ["age", 20]], [["id", 20], ["name", "somethign"]], [["id", 9], ["age", 10]] ]; const keys = [ "id", "name", "age", "nothing" ]; const fixed = data.map(d => { const existing = d.map(x => x[0]); const missing = keys.filter(k => !existing.includes(k)); missing.forEach(m => d.push([ m, undefined ])); return d; }); console.log(fixed);

about 4 years ago · Juan Pablo Isaza Denunciar

0

El siguiente método sigue estos pasos:

  1. Recorre los data en el orden dado, es decir, mantendrá el orden de los datos.
  2. Para cada fila de datos, recorre las keys en el orden de las claves. Entonces, dentro de cada fila, mantendrá el orden de las teclas y las teclas serán consistentes una encima de la otra.

Prefiero null sobre undefined aquí, pero puede cambiarlo a indefinido.

 const data = [ [ ['id', 1], ['name', 'somethign'], ['age', 20], ], [ ['id', 20], ['name', 'somethign'], ], [ ['id', 9], ['age', 10], ], ]; const keys = ['id', 'name', 'age', 'nothing']; const dataWithMissingKeys = data.map(row => keys.map(key => { const foundItem = row.find(element => element[0] === key); if (foundItem) { return foundItem; } return [key, null]; }) ); console.log(dataWithMissingKeys);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay un enfoque que se basa en Object.fromEntries y Object.entries :

  • Cree un objeto base vacío a partir de sus claves,
  • Recorra sus datos,
  • Para cada entrada, cree un objeto usando Object.fromEntries
  • Combina ese objeto con la base vacía.
  • Use Object.entries para volver a transformarse en una matriz de pares clave-valor

 const data = [ [["id", 1], ["name", "somethign"], ["age", 20]], [["id", 20], ["name", "somethign"]], [["id", 9], ["age", 10]] ]; const keys = [ "id", "name", "age", "nothing" ]; const base = Object.fromEntries(keys.map(k => [k, undefined])); console.log( data.map(d => Object.entries({ ...base, ...Object.fromEntries(d) })) )

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