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

142
Views
matriz de grupo de objetos con matriz interna de cadenas javascript

Tengo una variedad de objetos como a continuación:

 const books = [ { name:"abc", isbn: 123, tags: ["tagA","tagB","tagC"] }, { name:"xyz", isbn: 456, tags: ["tagB","tagC"] }, { name:"pqr", isbn: 456, tags: ["tagB"] } ];

Quiero agruparlo en función de las tags de cada objeto e insertar los objetos coincidentes en los valores de las tags , que es una matriz de cadenas. Mi salida esperada debe ser un objeto que tenga el valor agrupado como clave y el valor debe ser la matriz de valores coincidentes.

Mi salida esperada es-

 const expected = { "tagA" : [ { name:"abc", isbn: 123, }, ], "tagB" : [ { name:"abc", isbn: 123, }, { name:"xyz", isbn: 456, }, { name:"pqr", isbn: 456, }, ], "tagC" : [ { name:"abc", isbn: 123, }, { name:"xyz", isbn: 456, }, ], }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Hay preguntas similares para agrupar por valor clave; dado que desea agrupar según el valor de la clave, que es una matriz, podría hacer algo como esto:

 const books = [ { name:"abc", isbn: 123, tags: ["tagA","tagB","tagC"] }, { name:"xyz", isbn: 456, tags: ["tagB","tagC"] }, { name:"pqr", isbn: 456, tags: ["tagB"] } ]; let grouped = {}; books.forEach((book)=>{ book.tags.forEach(tag=>{ if(!grouped[tag]) grouped[tag] = [{name:book.name,isbn:book.isbn}] else grouped[tag].push({name:book.name,isbn:book.isbn}) }) }) console.log(grouped)

about 4 years ago · Juan Pablo Isaza Report

0

Este es un 'agrupar por' muy estándar con un bucle adicional para agregar cada elemento a varios grupos.

Aquí usando la desestructuración para aislar la matriz de tags del resto del objeto del book , iterando sobre cada etiqueta creando una propiedad en el resultado usando una asignación lógica nula (??=) si aún no existe, y luego empujando un clon de cada book usando sintaxis extendida

 const books = [{ name: "abc", isbn: 123, tags: ["tagA", "tagB", "tagC"] }, { name: "xyz", isbn: 456, tags: ["tagB", "tagC"] }, { name: "pqr", isbn: 456, tags: ["tagB"] }]; const result = {}; for (const { tags, ...book } of books) { for (const tag of tags) { (result[tag] ??= []).push({...book}); } } console.log(result);

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!