Valor máximo/mínimo de un atributo en una array de objetos en JavaScript

Dada una array de objetos y la tarea es obtener el valor máximo y mínimo de la array de objetos. Hay algunos métodos utilizados que se discuten a continuación:

  • Método Javascript apply(): es un método de escritura que se utiliza en diferentes objetos. Este método es diferente de la función call() debido a que toma los argumentos como una array.

    Sintaxis:

    apply()

    Valor de retorno: Devuelve los valores del método de una función dada.

  • Método JavaScript Array map(): este método se usa para crear una nueva array con los resultados de llamar a una función para cada elemento de la array. Este método llama a la función dada una vez para cada elemento de una array, en orden.

    Sintaxis:

    array.map(function(cValue, index, arr), thisValue)

    Parámetros:

    • function(cValue, index, arr): Es un parámetro requerido. Es una función que se ejecutará para cada elemento de la array.
      • cValue: Es un parámetro requerido. Especifica el valor del elemento actual.
      • índice: Es un parámetro opcional. Especifica el índice de array del elemento actual.
      • arr: Es un parámetro opcional. Especifica el objeto de array al que pertenece el elemento actual.
    • thisValue: Es un parámetro opcional. Especifica el valor que se pasará a la función para que se utilice como su valor «este». Si no se usa, el valor «indefinido» se pasará como su valor «este».

    Valor de retorno: Devuelve una array que tiene los resultados de llamar a la función proporcionada para cada elemento de la array original.

  • Método JavaScript Array reduce(): este método reduce la array a un solo valor. Este método ejecuta una función definida para cada valor de la array (de izquierda a derecha). El valor de retorno de la función se almacena en un acumulador (resultado o total).

    Sintaxis:

    array.reduce(function(total, curValue, curIndex, arr), initialValue)
    

    Parámetros:

    • function(total, curValue, curIndex, arr): Es un parámetro requerido. Es una función que se ejecutará para cada elemento de la array.
      • total: Es un parámetro obligatorio. Especifica el valor inicial, o el valor devuelto previamente de la función.
      • curValue: Es un parámetro requerido. Especifica el valor del elemento actual.
      • curIndex: Es un parámetro requerido. Especifica el índice de array del elemento actual.
      • arr: Es un parámetro opcional. Especifica el objeto de array al que pertenece el elemento actual.
    • initialValue: Es un parámetro opcional. Especifica el valor que se pasará a la función como valor inicial.

    Valor de retorno: Devuelve el resultado acumulado de la última llamada de la función de devolución de llamada.

Ejemplo 1: Este ejemplo obtiene el valor máximo de la propiedad y usando el método apply() y map() .

<!DOCTYPE HTML> 
<html> 
    <head> 
        <title> 
            Max value of an attribute in an array of objects
        </title>
    </head> 
      
    <body style = "text-align:center;"> 
      
        <h1 style = "color:green;" > 
            GeeksForGeeks 
        </h1> 
      
        <p id = "GFG_UP" style = "font-size: 16px; font-weight: bold;">
        </p>
          
        <button onclick = "gfg_Run()"> 
            Click here
        </button>
          
        <p id = "GFG_DOWN" style = 
            "color:green; font-size: 20px; font-weight: bold;">
        </p>
          
        <script>
            var el_up = document.getElementById("GFG_UP");
            var el_down = document.getElementById("GFG_DOWN");
              
            var array = [
                { "x": "3/10/2003", "y": 0.023452007 }, 
                { "x": "8/12/2002", "y": 0.02504234 }, 
                { "x": "1/16/2001", "y": 0.024533546 },
                { "x": "8/19/2006", "y": 0.03123423457 }];
                  
            el_up.innerHTML = JSON.stringify(array);
              
            function gfg_Run() {
                el_down.innerHTML = "Maximum value of y = " + 
                Math.max.apply(Math, array.map(function(o) {
                    return o.y; 
                }));
            }         
        </script> 
    </body> 
</html>                    

Producción:

  • Antes de hacer clic en el botón:
  • Después de hacer clic en el botón:

Ejemplo 2: Este ejemplo obtiene el valor mínimo de la propiedad y usando el método array.reduce() . Devuelve el objeto completo.

<!DOCTYPE HTML> 
<html> 
    <head> 
        <title> 
            Min value of an attribute in an array of objects
        </title>
    </head> 
  
    <body style = "text-align:center;"> 
          
        <h1 style = "color:green;" > 
            GeeksForGeeks 
        </h1> 
          
        <p id = "GFG_UP" style = "font-size: 16px; font-weight: bold;">
        </p>
          
        <button onclick = "gfg_Run()"> 
            Click here
        </button>
          
        <p id = "GFG_DOWN" style = 
            "color:green; font-size: 20px; font-weight: bold;">
        </p>
          
        <script>
            var el_up = document.getElementById("GFG_UP");
            var el_down = document.getElementById("GFG_DOWN");
              
            var array = [
                { "x": "3/10/2003", "y": 0.023452007 }, 
                { "x": "8/12/2002", "y": 0.02504234 }, 
                { "x": "1/16/2001", "y": 0.024533546 }, 
                { "x": "8/19/2006", "y": 0.03123423457 }];
                  
            el_up.innerHTML = JSON.stringify(array);
              
            function gfg_Run() {
                el_down.innerHTML = 
                JSON.stringify(array.reduce(function(prev, current) {
                    return (prev.y < current.y) ? prev : current
                }));
            }         
        </script> 
    </body> 
</html>                    

Producción:

  • Antes de hacer clic en el botón:
  • Después de hacer clic en el botón:

Publicación traducida automáticamente

Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *