Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

157
Vistas
Para cada uno en una matriz Javascript
var rank1 = 0 var rank2 = 0 var rank3 = 0 var rank4 = 0 const array1 = [Rank1, Rank1, Rank1, Rank3] var Rank1 = Rank1 var Rank2 = Rank2 var Rank3 = Rank3 var Rank4 = Rank4 array1.forEach((Rank1) => { rank1++ }); array1.forEach((Rank2) => { rank2++ }); array1.forEach((Rank3) => { rank3++ }); array1.forEach((Rank4) => { rank4++ });

Estoy tratando de recorrer array1 y guardar la cantidad de veces que ocurrió cada elemento en la matriz en su var.

Por ejemplo, si la matriz contiene dos Rank1, quiero que la variable rank1 sea igual a 2.

si consola.log rango1, rango2, rango3, rango4 obtengo el resultado 4,4,4,4 en lugar del resultado deseado que sería 3,0,1,0 en este caso

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En este caso, es mejor usar reduce() en la matriz. Esencialmente, comienza con un objeto vacío y luego comienza a iterar sobre los elementos en su matriz. Si el valor que encuentra es desconocido, agregue el valor como una propiedad al objeto y establezca su valor, es decir, su número de ocurrencias en 1. Si encuentra un valor que ya se conoce, ya debe estar en el objeto, entonces consígalo. Cuéntalo y auméntalo en uno.

Al final del ciclo, tendrá un conteo para cada valor en la matriz. Este algoritmo tiene una complejidad de tiempo de ejecución de O(n) que es un algoritmo asintóticamente óptimo ya que la búsqueda en el objeto ocurre en O(1) . También podría implementar esto con un Map , que sería esencialmente el mismo algoritmo (ver más abajo).

Puede pensar en el objeto Map/JS como sus diferentes variables de conteo rank1 , rank2 , rank3 , .... La única diferencia es que se escala a la cantidad de variables de conteo que necesita y elige la variable que necesita aumentar automáticamente simplemente usando el valor que desea contar.

con objeto JS

 const array1 = ["Rank1", "Rank1", "Rank1", "Rank3", "Rank2", "Rank4", "Rank1", "Rank3"]; const count = array1.reduce((prev, cur) => { if(prev.hasOwnProperty(cur)) prev[cur]++; else prev[cur] = 1; return prev; }, {}); console.log(count);

Rendimiento esperado:

 { Rank1: 4, Rank3: 2, Rank2: 1, Rank4: 1 }

con mapa

 const array1 = ["Rank1", "Rank1", "Rank1", "Rank3", "Rank2", "Rank4", "Rank1", "Rank3"]; const count = array1.reduce((prev, cur) => { if(prev.has(cur)){ let currentCount = prev.get(cur); currentCount++; prev.set(cur, currentCount); } else prev.set(cur, 1); return prev; }, new Map()); console.log([...count.entries()]);
Rendimiento esperado

 [ [ "Rank1", 4 ], [ "Rank3", 2 ], [ "Rank2", 1 ], [ "Rank4", 1 ] ]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede probar el siguiente código a continuación.

 var rank1 = 0 var rank2 = 0 var rank3 = 0 var rank4 = 0 const array1 = ['rank1','rank1','rank1','rank3'] array1.forEach( function( item, i ) { eval( item + '+= ' + 1 + ';'); } ); console.log(rank1, rank3);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda