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

191
Vistas
Javascript: agregar objetos a la matriz con una identificación coincidente

Tengo una matriz de categories que tiene el id de valor que estoy tratando de hacer coincidir con mis articles de matriz

Si los articles tienen una identificación coincidente con una de las categories que me gustaría combinarlos en una matriz. Puedo agregar estos objetos a la matriz, pero no coinciden según la identificación.

Aquí hay un ejemplo de categorías:

 const categories = [{results: { "id": 28, "name": "Articles" }, { "id": 76, "name": "Projects" } }]

Aquí hay un ejemplo de artículos:

 const articles = [ { "title": "first article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "second article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "thirdarticle", "content": "lorem ipsum", "categoryId": 76 }, ]

Estoy intentando combinar las dos matrices en una. Si es posible, me gustaría que la matriz de articles sea una matriz en ese índice coincidente. Por ejemplo:

 const combined = [ { "id": 28, "name": "Articles", "articles:: [ { "title": "first article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "second article", "content": "lorem ipsum", "categoryId": 28 }, ], }, ];

Intenté hacer esto mapeando categorías y usando Object.assign . Los resultados de salida parecen combinar matrices, pero creo que todas están combinadas y no coinciden con la identificación.

¿Cómo puedo lograr esto?

 const articles = [ { "title": "first article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "second article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "thirdarticle", "content": "lorem ipsum", "categoryId": 76 }, ] const categories = {results: [{ "id": 28, "name": "Articles"}, {"id": 76, "name": "Projects"}]} let combined = categories.results.map((item, i ) => Object.assign(item, articles)); console.log(combined)

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay una forma de llegar usando su código pero filtrando artículos coincidentes y usando el operador de spread

 let combined = categories.results.map(item => ({ ...item, articles: articles.filter(f => f.categoryId == item.id) })); 

 const articles = [{ "title": "first article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "second article", "content": "lorem ipsum", "categoryId": 28 }, { "title": "thirdarticle", "content": "lorem ipsum", "categoryId": 76 }, ] const categories = { results: [{ "id": 28, "name": "Articles" }, { "id": 76, "name": "Projects" }] } let combined = categories.results.map(item => ({ ...item, articles: articles.filter(f => f.categoryId == item.id) })); console.log(combined)

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