8

Tengo lo siguiente

   let tabla = [{
        "equipo": "Barcelona FC",
        "pj": 35,
        "pg": 25,
        "pe": 8,
        "pp": 2,
        "pts": 83,
        "gf": 86,
    },

    {
        "equipo": "Atlético de Madrid",
        "pj": 35,
        "pg": 22,
        "pe": 8,
        "pp": 5,
        "pts": 74,
        "gf": 32,
    },
    {
        "equipo": "Ronaldo FC",
        "pj": 35,
        "pg": 22,
        "pe": 8,
        "pp": 5,
        "pts": 74,
        "gf": 12,
    },
    {
        "equipo": "Aleman casla",
        "pj": 35,
        "pg": 22,
        "pe": 8,
        "pp": 5,
        "pts": 74,
        "gf": 1,
    }];

Lo que quiero hacer es mostrar el equipo que hizo menos goles hice una función para eso pero me parece que lo que anda fallando es el if que esta adentro del for como debería ir esa condición?

function buscarmenor(tabla) {
        let menor = tabla[0].gf;
        for (let i = 0; i < tabla.length; i++) {
            if (tabla[i].gf < menor.gf) {
                menor = tabla[i].equipo
            }
        }
    }

Se agradece la ayuda, la variable menor tiene que quedar el nombre del equipo o sea un string.

Rubén
  • 10,857
  • 6
  • 35
  • 79
Mabbitoxd
  • 277
  • 1
  • 2
  • 2
    Bienvenido. El objeto que estás asignando a la variable `tabla` no es JSON, es un objeto tipo Array cuyos elementos son objetos. Ref. [¿Cuál es la diferencia entre JSON y un objeto en Javascript?](https://es.stackoverflow.com/q/164943/65). Por otro lado `let` no es una variable, esta es una palabra reservada de para sentencias que declaran variables. Ref. https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/let. Además Stack Snippet sólo debe usarse para código ejecutable, pero lo que has agregado no es ejecutable (al hacer clic en el botón ejecutar no pasa nada) – Rubén Jul 14 '19 at 20:36
  • Los errores están acá `let menor = tabla[0].gf;` y acá `menor = tabla[i].equipo`. Siempre debería ser `menor = tabla[X]`, de esa forma el `if` funcionaria correctamente. – Marcos Jul 14 '19 at 21:03
  • que tal `const buscarmenor = (tabla) => tabla.sort((item, lastItem) => item.gf - lastItem.gf)[0]`?? – JackNavaRow Oct 03 '20 at 20:14

2 Answers2

11

Lo puedes hacer utilizando el método reduce que aplica una función anónima cuyos parámetros son el valor anterior y valor el actual. Simplemente comparando el anterior con el actual ya puedes obtener el mínimo y/o el máximo.

Dicho esto tu función quedara así:

function buscarmenor(tabla) {
    let equipoMenor = tabla.reduce(function(prev, curr) {
        return prev.gf < curr.gf ? prev : curr;
    });

    return equipoMenor.equipo
}


console.log(buscarmenor(tabla))
Pavel
  • 107
  • 4
MitaCloud
  • 2,632
  • 7
  • 20
1
function buscarmenor(tabla) {
        let menor = tabla[0];
        for (let i = 0; i < tabla.length; i++) {
            if (tabla[i].gf < menor.gf) {
                menor = tabla[i];
            }
        }
        return menor.equipo;
    }
Lobos
  • 14,463
  • 3
  • 9
  • 28