JavaScript - Obtener el index del array con el valor mas bajo

 
Vista:
sin imagen de perfil

Obtener el index del array con el valor mas bajo

Publicado por Fernando (1 intervención) el 13/03/2017 15:13:52
Buenas,
Necesito devolver el index, del valor de age mas bajo del array. Por ejemplo en este caso sería el index 3 "Rafael de 6 años".

¿Como puedo hacerlo? He probado con reduce pero no se como.
Detallo el array mas abajo.

1
2
3
4
5
6
var Personas = [
{name: "Fernando", age: 22},
{name: "Manuel", age: 33},
{name: "Juan", age: 18},
{name: "Rafael", age: 6},
]

Espero vuestra ayuda.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Obtener el index del array con el valor mas bajo

Publicado por kip (107 intervenciones) el 13/03/2017 15:36:02
Hola, hice una funcion a ver si te ayuda:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function max_min(obj, prop) {
    var max = -Infinity;
    var min = +Infinity;
    var i_max = 0;
    var i_min = 0;
 
    for (var i = 0, s = obj.length; i < s; i++) {
        console.log(obj[i][prop]);
        if (max < obj[i][prop]) {
            max = obj[i][prop];
            i_max = i;
        }
        if (min > obj[i][prop]) {
            min = obj[i][prop];
            i_min = i;
        }
    }
    return {max: max, min: min, imax: i_max, imin:i_min};
}

Y la usas:

1
2
3
4
5
6
7
8
var Personas = [
{name: "Fernando", age: 22},
{name: "Manuel", age: 33},
{name: "Juan", age: 18},
{name: "Rafael", age: 6},
]
 
console.log(max_min(Personas, 'age'));

Si te fijas en la consola del navegador tendras un objeto con dos elementos, uno es el max valor y el otro el min asi mismo con los indices del elemento que le pasaste, en tu caso por ejemplo:

1
{ max: 33, min: 6, imax: 1, imin: 3 }

Entonces:

1
2
3
4
info = max_min(Personas, 'age');
 
console.log(Personas[info.imax]); // Persona con edad mayor
console.log(Personas[info.imin]); // Persona con edad menor

Mostrara:

1
2
{ name: 'Manuel', age: 33 }
{ name: 'Rafael', age: 6 }

Si tienes alguna duda nos avisas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Obtener el index del array con el valor mas bajo

Publicado por Bertoldo (6 intervenciones) el 13/03/2017 22:09:20
Menos elaborado que el maestro Kip, pero finfla.

Saludos,
Bertoldo.

1
2
3
4
5
6
7
8
9
10
11
12
13
var Personas = [
{name: "Fernando", age: 22},
{name: "Manuel", age: 33},
{name: "Juan", age: 18},
{name: "Rafael", age: 6} //OBSERVA que le he quitado la última coma,eh
]
 
for (var i = 0, minor=0, s = Personas.length; i < s; i++) {
   if (Personas[minor].age > Personas[i].age){
     minor=i
   }
}
alert('index menor: '+minor+', o sea '+Personas[minor].name+' de '+Personas[minor].age+' años')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar