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

170
Visualizações
Cuente pares de elementos en una matriz y resúmalos

Quiero crear una función que cuente los pares de una matriz y al final cuente los pares, el resultado esperado aquí debería ser:

 { 1: 1, 10: 1, 90: 2 }, 4

pero estoy recibiendo

 { 1: 1, 90: 2 }, 3

¿Alguien puede dar un consejo sobre cómo volver a trabajar esto? No obtiene 10 como par porque ocurre tres veces, pero debe contarlo como par porque subió dos veces. ¿Hay mejores métodos para crear esto?

 const pairs = [90, 10, 1, 2, 3, 4, 5, 10, 1, 90, 90, 90, 10, 22]; function checkPairs(arr) { const result = {} for(let i =0;i<pairs.length;i++) { const counter = pairs.filter(item => item == arr[i]); if(counter.length > 1 && counter.length % 2 == 0) { result[pairs[i]] = counter.length/2; } } return result; } function countPairs(obj) { let result = 0; for([i, t] of Object.entries(obj)) { result+=t; } return result; } const countedPairs = checkPairs(pairs); const counter = countPairs(countedPairs); console.log(countedPairs, counter)

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

0

Su cheque dice que tiene que haber un número exacto para los pares cuando está haciendo counter.length % 2 == 0

Solo necesita asegurarse de tener 2 o más y simplemente redondear hacia abajo con el piso

 const pairs = [90, 10, 1, 2, 3, 4, 5, 10, 1, 90, 90, 90, 10, 22]; function checkPairs(arr) { const result = {} for(let i =0;i<pairs.length;i++) { const counter = pairs.filter(item => item == arr[i]); if(counter.length > 1) { result[pairs[i]] = Math.floor(counter.length/2); } } return result; } function countPairs(obj) { let result = 0; for([i, t] of Object.entries(obj)) { result+=t; } return result; } const countedPairs = checkPairs(pairs); const counter = countPairs(countedPairs); console.log(countedPairs, counter)

Su código de filtro hace que haga un bucle mucho más de lo que necesita. Solo tiene que recorrer una vez la matriz y realizar un seguimiento de las veces que la ha visto.

 const pairs = [90, 10, 1, 2, 3, 4, 5, 10, 1, 90, 90, 90, 10, 22]; const counts = pairs.reduce(function (o, val) { // update how many times we have seen it. o.count[val] = (o.count[val] || 0) + 1; // is it the a pair yet? if (o.count[val] ===2) { // if it is, reset the count o.count[val] = 0; // update the count for the pair o.pairsCount[val] = (o.pairsCount[val] || 0) + 1; o.totalPairs++; } return o; }, { count: {}, pairsCount: {}, totalPairs: 0}); console.log(counts.pairsCount, counts.totalPairs);

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Qué tal si pruebas este enfoque? Comprobación de que la longitud de la matriz de contadores es uniforme. En caso afirmativo, haga el cálculo regular; de lo contrario, simplemente reste 1 de la longitud del contador.

 const pairs = [90, 10, 1, 2, 3, 4, 5, 10, 1, 90, 90, 90, 10, 22]; function checkPairs(arr) { const result = {} for(let i =0;i<pairs.length;i++) { const counter = pairs.filter(item => item == arr[i]); if(counter.length > 1) { result[pairs[i]] = counter.length % 2 == 0 ? counter.length / 2 : (counter.length -1) / 2 ; } } return result; } function countPairs(obj) { let result = 0; for([i, t] of Object.entries(obj)) { result+=t; } return result; } const countedPairs = checkPairs(pairs); const counter = countPairs(countedPairs); console.log(countedPairs, counter)

about 4 years ago · Juan Pablo Isaza Relatório

0

También puedes hacerlo usando Array.prototype.reduce .

  1. Por cada incremento de número se cuenta de 1 en 1 .
  2. Cada vez que el conteo de un número en particular sea par, incremente el total en 1 .

 const nums = [90, 10, 1, 2, 3, 4, 5, 10, 1, 90, 90, 90, 10, 22], totalPairs = nums.reduce( (acc, num) => { acc[num] ??= 0; acc[num] += 1; if (!(acc[num] % 2)) { acc.total += 1; } return acc; }, { total: 0 } ).total; console.log(totalPairs);

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