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

300
Visualizações
¿Cómo obtener valores únicos de una matriz de objetos JS?

Necesito ayuda para averiguar cómo obtener valores únicos de una matriz de objetos en este formato. He revisado varios ejemplos, pero ninguno tenía los valores de una clave como matriz. Gracias de antemano por tu consejo.

Tengo una matriz JS con objetos complejos con algunos valores de objeto que son matrices:

 let array = [ { key1: ["one","two","four"], key2: [1,2,4] }, { key1: ["two","four","six"], key2: [2,4,6] }, { key1: "nine", key2: 9 }, ];

Quiero obtener los valores únicos para todas las claves en el objeto (para que sea compatible con cualquier estructura) y generar un resultado como este:

 [ { key1: ["one","two","four", "six", "nine"], key2: [1,2,4,6,9] } ]
about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puedes probar esto:

 let array = [ { key1: ["one","two","four"], key2: [1,2,4] }, { key1: ["two","four","six"], key2: [2,4,6] }, { key1: "nine", key2: 9 }, ]; let keys = [...new Set(array.flatMap(d => Object.keys(d)))]; let valuesAsObj = Object.fromEntries( keys.map(k => [ k, [... new Set(array.flatMap(d => d[k] ? d[k] : null).filter(v => v != null && v != undefined))] ]) ); let valuesAsArr = keys.map(k => [... new Set(array.flatMap(d => d[k] ? d[k] : null).filter(v => v != null && v != undefined))]) console.log(valuesAsObj); console.log(valuesAsArr);

about 4 years ago · Santiago Trujillo Relatório

0

Lo abordé creando un Set para cada propiedad única y agregando todas las propiedades a ese conjunto.

 let array = [ { key1: ["one","two","four"], key2: [1,2,4] }, { key1: ["two","four","six"], key2: [2,4,6] }, { key1: "nine", key2: 9 }, ]; const result = {}; array.forEach(a => { for (let key in a) { if (!result[key]) result[key] = new Set(); let v = a[key]; if (!Array.isArray(v)) v = [v]; v.forEach(result[key].add, result[key]); } }); console.log(result ); const overlyComplicatedResult = Object.entries(result).map(([key,val]) => ({[key]: [...val]})); console.log(overlyComplicatedResult);

Personalmente, estoy satisfecho con los resultados en el formato intermedio que se almacenan en la variable de result , que es solo un objeto donde cada propiedad es una de las claves y el valor de cada propiedad es un Set de todos los valores distintos.

Pero, si realmente quiere transformar eso en su resultado demasiado complicado, donde tiene una matriz de objetos, cada uno con una sola propiedad, y los elementos únicos se almacenan en una matriz en lugar de un Set , entonces el código se proporciona arriba como un paso de transformación final usando Object.entries .

about 4 years ago · Santiago Trujillo Relatório

0

Podrías intentar algo como esto:

 let array = [ { key1: ["one","two","four"], key2: [1,2,4] }, { key1: ["two","four","six"], key2: [2,4,6] }, { key1: "nine", key2: 9 }, ]; let obj = {}; array.forEach((item) => Object.entries(item).forEach((entry) => { if (!obj[entry[0]]) obj[entry[0]] = []; !Array.isArray(entry[1]) ? obj[entry[0]].push(entry[1]) : (obj[entry[0]] = [...obj[entry[0]], ...entry[1]]); }) ); /*ADDED LOGIC TO HAVE UNIQUE VALUES IN THE OBJECT*/ Object.entries(obj).forEach( (entry) => (obj[entry[0]] = Array.from(new Set(entry[1]))) ); console.log(obj); let result = []; Object.entries(obj).forEach((entry) => result.push({ [entry[0]]: Array.from(new Set(entry[1])), }) ); console.log(result);

about 4 years ago · Santiago Trujillo 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