Creo que te la estas complicando de mas.
Código Javascript
:
Ver originalvar app = function() {
// inicializamos el arreglo de objetos con objeto tipo nombre, puntuacion
var jugadores = [
{
nombre: 'Juan',
puntuacion: 8
},
{
nombre: 'Pedro',
puntuacion: 6
},
{
nombre: 'Maria',
puntuacion: 7
}
];
// ordenamos el arreglo con una funcion que compare la propiedad puntacion
var ordenar = function() {
return jugadores.sort(function(a, b){
return a.puntuacion < b.puntuacion
});
};
// se manda llamar al ordenar desde que se corre funcion
jugadores = ordenar();
// se retorna objeto con 2 metodos que accesaran variables en closure para obtener datos necesarios
return {
obtenerGanador: function () {
return jugadores[0];
},
obtenerJugadoresOrdenados: function () {
return jugadores;
}
};
};
Para correlo solo basta
Código Javascript
:
Ver originalvar b = app();
b.obtenerGanador() // Object {nombre: "Juan", puntuacion: 8}
b.obtenerJugadoresOrdenados() //array ordenado de objetos
Puede ser que lo del closure sea de mas para alguien empezando (aunque te recomiendo que leas un poco sobre eso), pero la idea es guardar las variables en objetos y no en variables independientes y usar el mismo sort que ofrece el lenguaje solo mandandole una simple funcion custom que ordene el array.
Ahora para llenar el array si tienes algo como jugador1, puntacion1
Mejor ponles alguna clase y con un query selector agarras todo y armas el array de objects con los valores