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

302
Vistas
¿Cómo encuentra los 10 índices de una matriz de JavaScript que tienen los valores numéricos más altos?

Estoy contando la frecuencia de los números entre 0 y 256 que se encuentran en una secuencia usando una matriz de JavaScript.

Si veo aparecer el número 74, lo estoy almacenando en el valor del índice 74 (es decir, mysequence[74] = mysequence[74] + 1)

Puedo ver los resultados contados y es fácil escanearlo visualmente para ver que ciertos números (por ejemplo, 65) han aparecido con mucha más frecuencia que otros. Quiero encontrar los 10 números que aparecen con más frecuencia.

Me preocupa que una clasificación simple no retenga el valor del índice, que es lo que estoy usando para rastrear qué número está asociado con la frecuencia contada.

El único pensamiento que me viene a la mente sería un enfoque de fuerza bruta. Crear una función para revisar todos los valores uno por uno, manteniendo el más alto e ignorando todos los índices que forman parte de una lista de ignorados. Luego, ejecute esa función 10 veces, cada vez que pase los valores de los índices a los que se les han asignado los valores principales.

¿Hay alguna manera de obtener las claves numéricas asociadas con los 10 valores principales sin recurrir al enfoque anterior? (es decir, ¿tal vez convertir mis datos a un formato diferente y algunas funciones sofisticadas de clasificación de mapas?)

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

0

Puede obtener los índices y ordenarlos usando los valores y obtener los índices más buscados.

 const values = [7, 3, 4, 5, 2, 8], indices = [...values.keys()].sort((a, b) => values[b] - values[a]); console.log(indices.slice(0, 3));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si lo ordena de inmediato, definitivamente perderá información sobre los índices. Lo que puede hacer es asignar la matriz con los valores a una matriz con el índice y el valor (para que no pierda información más adelante), luego la ordena, pero cambia los criterios del método de clasificación para obtener los índices con los valores más altos.

 const arr = [2, 1, 0, 3]; const getTopN = (arr, n = 10) => { const _arr = arr.map((value, index) => [value, index]); // by using b[0] - a[0] instead of a[0] - b[0] we can get the array in non-increasing order _arr.sort((a, b) => b[0] - a[0]) return _arr.slice(0, n).map(([_, index]) => index); } console.log(getTopN(arr))

La función getTopN hace el trabajo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede haber otras formas, pero lo que se me ocurre es asignar la matriz original a un conjunto de pares de valor/índice, ordenar el resultado según el valor, luego tomar los últimos (o primeros) 10 elementos de la matriz ordenada (dependiendo de si hizo o no una ordenación ascendente o descendente).

 yourArray.map((value, index) => ({ value, index })) .sort((a, b) => b.value - a.value) .slice(0, 10) .map(obj => obj.index);

Puede omitir el último map si desea mantener tanto los índices como los valores que los acompañan en su resultado.

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