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

144
Visualizações
Cómo usar un JS reduce para devolver una matriz sin duplicados cuando se usa también .split

Me gustaría entender cómo regresar de una matriz .reduce de elementos que no contienen duplicados.

La matriz que tengo es particular:

['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']

En detalles, la cadena dentro de la matriz está formada por 2 identificadores como ejemplo

  • JJ2AG -> esto identifica con que grupo de personas esta relacionada esa persona
  • 001099 -> esto identifica el id de esa persona

Entonces, lo que necesito inicialmente es dividir los elementos de la matriz sin tener el - por lo que el resultado será el siguiente:

[0: JJ2AG, 1: 001099]

Luego, debería verificar desde newArry si el 0 de cada elemento es único y, como resultado, debería tener solo una matriz:

['JJ2AG', 'JJ3AG', 'JJ4AG']

Entonces, esta última matriz contiene solo una vez la parte 0 de cada elemento como se describe arriba

Traté de usar reduce pero no puedo entender cómo tener esta nueva matriz y no puedo usar bucles como for y forEach según los requisitos que tengo, así que lo que he hecho hasta ahora en el fragmento pero no tengo idea de cómo crear una nueva matriz como necesito como

['JJ2AG', 'JJ3AG', 'JJ4AG']

 const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']; const x = ids.reduce(( acc, item) => { console.log('ACC', acc); console.log('ITEM', item); const splited = item.split('-'); console.log(splited); const groupId = splited[0]; console.log(groupId); return acc.includes(groupId) ? [splited] : [...acc, item]; }, []); console.log(x)

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Como parece que estás en JavaScript moderno, puedes usar Set para esto:

 const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']; const x = [...new Set(ids.map(id => id.split("-")[0]))] console.log(x)

El conjunto toma elementos únicos de una matriz, así que primero, asigne todos los identificadores a la primera parte de la cadena ( id.split("-")[0] ), conviértalo en un conjunto y, usando la extensión, vuelva a convertirlo en una matriz.

about 4 years ago · Juan Pablo Isaza Relatório

0

Solo cambia:

 return acc.includes(groupId) ? [splited] : [...acc, item];

A:

 return acc.includes(groupId) ? acc : [...acc, groupId];

Cada vez que se encuentra un duplicado, básicamente está eliminando las ID únicas anteriores y, en su lugar, devuelve el duplicado con [groupId] ; en su lugar, debe devolver los ID únicos sin cambios. También debe agregar a la matriz de ID únicos groupId not item . Vea la demostración a continuación:

 const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']; const x = ids.reduce(( acc, item) => { //console.log('ACC', acc); //console.log('ITEM', item); const splited = item.split('-'); //console.log(splited); const groupId = splited[0]; //console.log(groupId); return acc.includes(groupId) ? acc : [...acc, groupId]; }, []); console.log(x)

QUE TAMBIÉN PUEDES ESCRIBIR COMO...

 const ids = ['JJ2AG-001099', 'JJ2AG-001999', 'JJ3AG-001999', 'JJ4AG-001999']; const x = ids.reduce( ( acc, item) => acc.includes(item.split('-')[0]) ? acc : [...acc, item.split('-')[0]] , [] ); console.log(x);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar un Set o puede usar un objeto simple y agregar claves según sea necesario. Este es un oneliner que usa reduce .

 Object.keys(ids.reduce((acc, current)=> { acc[current.split("-")[0]]=true; return acc}, {}))

Lo que hace es que agrega claves al objeto, si encuentra una clave existente, no importa. Al final necesitas las claves del acumulador y ahí es donde entra en juego Object.keys .

about 4 years ago · Juan Pablo Isaza 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