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

94
Visualizações
cómo encontrar cadenas duplicadas en una matriz (['a', 'a', 'aa', 'a', 'aa'])

Estoy aprendiendo JS y tengo deberes. Me piden que transforme la matriz en una nueva matriz donde cada elemento está representado por el recuento continuo de las apariencias de los elementos.

Por ejemplo

 [1, 2, 1, 1, 3]

se convierte

 [1, 1, 2, 3, 1]

Escribí un código que funciona para números, pero falla en las pruebas con cadenas:

ACTUALIZACIÓN: funciona para algunos números, para otros no :/

 function duplicates(arr) { let i, j, newArr = [], count = 1; for (i = 0; i < arr.length; i++) { for (j = 0; j < arr.length; j++) { if (i == j) { continue } if (arr[i] === arr[j]) { newArr.push(count++) break } } if (j === arr.length) { newArr.push(1) } } return newArr } console.log(duplicates(['a', 'a', 'aa', 'a', 'aa'])) //[ 1, 2, 1, 3, 2] <-- FAILS console.log(duplicates([1, 2, 1, 2, 3, 1])) //[1, 2, 3, 4, 1, 5] <-- fails console.log(duplicates([1, 2, 1, 1, 3])) //[ 1, 1, 2, 3, 2, 1 ] <-- MY CODE WORKS

¿Podrías darme una pista? :/

¡Gracias!

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

0

Un enfoque es usar .map() , .slice() y .filter()

 const duplicates = (nums) => nums.map((value, index) => { const segment = nums.slice(0,index+1); return segment.filter(v => v === value).length; }); console.log(duplicates([1, 2, 1, 1, 3])); console.log(duplicates([1, 2, 1, 2, 3, 1])); console.log(duplicates(['a', 'a', 'aa', 'a', 'aa']));

  1. map crea una nueva matriz iterando a través de nums y transformando cada valor a través de una función
  2. slice se usa para crear una nueva matriz basada en nums . En el primer ejemplo, la nueva matriz es [1] en la primera iteración, [1,2] en la segunda, seguida de [1,2,1] y así sucesivamente.
  3. El filter encuentra los elementos en la matriz desde el n. ° 2 que coinciden con el valor actual.
about 4 years ago · Juan Pablo Isaza Relatório

0

Desarrollando la idea de @CRice y @Kaiido, creemos un objeto que cree el count de los elementos mientras recorre la matriz:

 function duplicates(arr) { const obj = {}; let value = 0; let newArr = []; for (i = 0; i < arr.length; i++) { value = arr[i]; if (obj[value]){ obj[value] = obj[value] + 1; } else{ obj[value] = 1; } newArr.push(obj[value]); } return newArr } console.log(duplicates(['a', 'a', 'aa', 'a', 'aa'])) //[ 1, 2, 1, 3, 2] <-- FAILS console.log(duplicates([1, 2, 1, 2, 3, 1])) //[1, 2, 3, 4, 1, 5] <-- fails console.log(duplicates([1, 2, 1, 1, 3])) //[ 1, 1, 2, 3, 2, 1 ] <-- MY CODE WORKS

JS tiene un buen incorporado, reduce , que lo hace de una manera más simple:

 const duplicates = (arr) => { const obj = {} return arr.reduce ( (acc,cur) => { obj[cur] = (obj[cur])?obj[cur]+1:1 acc.push(obj[cur]) return acc }, []); } console.log(duplicates(['a', 'a', 'aa', 'a', 'aa'])) //[ 1, 2, 1, 3, 2] <-- FAILS console.log(duplicates([1, 2, 1, 2, 3, 1])) //[1, 2, 3, 4, 1, 5] <-- fails console.log(duplicates([1, 2, 1, 1, 3])) //[ 1, 1, 2, 3, 2, 1 ] <-- MY CODE WORKS

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