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