JavaScript - ¿Como tomar todos los valores de una lista (JSON)?

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 15 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Como tomar todos los valores de una lista (JSON)?

Publicado por Matias (3 intervenciones) el 29/01/2019 01:13:42
El caso es el siguiente:

Tengo un listado de 10 registros en un JSON con codigo, nombre y nota. La idea es hacer dos botones, el cual uno muestre las nota mas altas y el otro las notas mas bajas.
El problema que tengo es que me toma el primer valor (que no es la nota mas alta) y las junta con las que si lo son.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!-- Creacion del JSON-->
var jsonText = '{"estudiantes" : [' +
'{"codigo" : "001"     ,"nombre" : "Julia"     ,"nota" : 9},' +
'{"codigo" : "002"     ,"nombre" : "Matias"     ,"nota" : 10},' +
'{"codigo" : "003"     ,"nombre" : "Isabella"     ,"nota" : 7},' +
'{"codigo" : "004"     ,"nombre" : "Liz"     ,"nota" : 9},' +
'{"codigo" : "005"     ,"nombre" : "Claudio"     ,"nota" : 8},' +
'{"codigo" : "006"     ,"nombre" : "Maite"     ,"nota" : 3},' +
'{"codigo" : "007"     ,"nombre" : "Cesar"     ,"nota" : 5},' +
'{"codigo" : "008"     ,"nombre" : "Analia"     ,"nota" : 8},' +
'{"codigo" : "009"     ,"nombre" : "Leonel"     ,"nota" : 4},' +
'{"codigo" : "010"     ,"nombre" : "Dante"     ,"nota" : 10}' + ']}';
 
<!-- Estudiante con mayor nota -->
function Mnota(json) {
    var Nmayor = json.estudiantes[0].nota;
    var pos = 0;
    var aux = "";
    for (i = 0; i < json.estudiantes.length; i++) {
 
        if (json.estudiantes[i].nota >= Nmayor) {
            Nmayor = json.estudiantes[i].nota;
            pos = i;
            aux=aux+json.estudiantes[pos].nombre+"<br>";
        }
    }
    document.getElementById("mayor").innerHTML = "Las personas con la nota más alta son: <br>" + aux + "<br>";
}
 
function eventoMayorNota() {
    Mnota(jsObj);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Como tomar todos los valores de una lista (JSON)?

Publicado por Alejandro (532 intervenciones) el 29/01/2019 16:07:17
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Te falta definición:

¿vas a mostrar solo una nota, la mas alta?
¿vas a mostrar varias notas altas, a partir de que nota se considera alta?
¿que cantidad de notas altas se deben mostrar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 15 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Como tomar todos los valores de una lista (JSON)?

Publicado por Matias (3 intervenciones) el 29/01/2019 16:35:17
Antes que nada, gracias por comentar Alejandro y te respondo

Debería revisar el JSON para ver (de la escala del 1 al 10) cual es la más alta. Casualmente tengo 2 registros con 10. debería mostrar los 2 registros con 10.

Si el if (json.estudiantes[i].nota >= Nmayor) lo dejo así me trae el primer registro (porque no hay nota parametro previamente cargada) y los 2 registros con 10
Si el if (json.estudiantes[i].nota > Nmayor) lo dejo así (Le saco el "=" ) me trae sólo el primer valor con 10 pero no el segundo.

Resumiendo:
- Tiene que ver cual (de todos los registros que tiene) es la nota más alta (En este caso es 10)
- Tiene que mostrar todos los valores que coincidan con la nota más alta.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Como tomar todos los valores de una lista (JSON)?

Publicado por Alejandro (532 intervenciones) el 29/01/2019 16:51:11
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
1
2
3
4
5
6
7
8
...
    if (json.estudiantes[i].nota > Nmayor) {
        Nmayor = json.estudiantes[i].nota;
        aux=json.estudiantes[i].nombre+"<br>";
    }else if(json.estudiantes[i].nota == Nmayor) {
        aux+=json.estudiantes[i].nombre+"<br>";
    }
...
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
sin imagen de perfil
Val: 10
Ha aumentado su posición en 15 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

¿Como tomar todos los valores de una lista (JSON)?

Publicado por Matias (3 intervenciones) el 29/01/2019 17:20:40
Alejandro, funciona a la perfección el código que pasaste.
Antes de ver el mensaje lo había resuelto de otra manera.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function Mnota(json) {
    var Nmayor = json.estudiantes[0].nota;
    var pos = 0;
    var aux = "";
    for (i = 0; i < json.estudiantes.length; i++) {
        if (json.estudiantes[i].nota >= Nmayor) {
            Nmayor = json.estudiantes[i].nota;
        }
    }
    for (i = 0; i < json.estudiantes.length; i++) {
        if (json.estudiantes[i].nota >= Nmayor) {
            pos = i;
            aux=aux+json.estudiantes[pos].nombre+"<br>";
        }
    }
    document.getElementById("mayor").innerHTML = "Las personas con la nota más alta son: <br>" + aux + "<br>";
}
 
function eventoMayorNota() {
    Mnota(jsObj);
}
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