Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Como sacar los 10 valores mas grandes de un array?

14 de junio de 2016

Buenas,

Necesito mostrar en una categoría de mi web los productos más venidos. He mirado pero en general solo suele mostrarse el mayor, ya sea con una función como por ejemplo var max=Math.max.apply(null, arrayNombre); o bucles con condicionales.

Si tengo este array por ejemplo:

valoraciones = [12, 125, 52, 151, 121, 51, 12, 515, 77, 211, 997, 62, 1216, 11, 921]

¿Como se haría para sacar los 10 mayores?

Saludos


Respuestas

#1

Puedes hacerlo con JavaScript y sin utilizar jQuery:

var valoraciones = [12, 125, 52, 151, 121, 51, 12, 515, 77, 211, 997, 62, 1216, 11, 921];
var top10 = valoraciones.sort(function (a, b) { return b - a; }).slice(0, 10);

Al método sort() le tienes que pasar una función propia para ordenar los valores de manera descendente porque si no los número se ordenan como si fueran palabras en vez de números (ejemplo: 1, 120, 5 en vez de 1, 5, 120). Luego con slice() recortas el array y te quedas con los primeros 10 elementos.

En cualquier caso, si es posible, este tipo de problemas se suelen resolver en la parte de la base de datos. Usando la consulta SQL apropiada es fácil obtener los 10 mayores valores.

@javiereguiluz

14 junio 2016, 20:07
#2

Me has sacado el problema, mil gracias!!

Sí, se que en SQL es más fácil, hay veces pienso que en sql se haría con un simple select y poco más, pero es que ahora tengo que trabajar con Firebase para un proyecto, pero el año que viene ya estaremos con Oracle y Apache, por lo que espero poder hacer estas cosas sin mayor complicación..

Gracias de nuevo!

@LeJukeOfLeito

16 junio 2016, 16:29