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

303
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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