Calcular media y valores extremos

En este ejemplo se trata de crear una función que procese una lista de valores numéricos y devuelva un objeto con la media de esos valores, el valor máximo y el valor mínimo. Recueda que la media se calcula como la suma de datos dividido por número de valores. El número de datos pasados a la función es variable y no se usan los métodos del objeto array.

Aquí vas a ver como pasar un número variable de argumentos a una función y el uso de bucles

Solución

Puede ir en head

<script>

function media(datos) {

  let suma=0, media, max, min, numDatos, item;

  numDatos = datos.length;

  max = datos[0];

  min = datos[0];

  for (item = 0; item < numDatos; item++)

    {

     suma += datos[item];

     max = (datos[item] > max) ? datos[item]:max;

     min = (datos[item] < min) ? datos[item]:min;

    }

  media = suma/numDatos;

  return {"media": media, "max": max, "min": min};

}

</script>

El contenido de la sección body:

<body>

<div id="res"></div>

<script>

var datos = media( [3,10,20,5,10] );

var ores = document.getElementById('res');

ores.innerHTML = "La media de 3,10,20,5,10 es ";

ores.innerHTML += datos.media+"<br>";

ores.innerHTML += "Máximo: "+datos.max+"<br>";

ores.innerHTML += "Mínimo: "+ datos.min;

</script>

</body>

Explicación

Se crea la función como es habitual con function.

Se quiere usar con un lista de longitud variable así que usamos como parámetro un array con la lista de números a procesar. También podríausarse el operador spread (...)

Se declaran las variables que se van a usar, e inicializamos los valores de suma, max y min. .

Guardamos en numDatos el número de argumentos, para ello se usa la propiedad length del objeto arguments del Function.

Mediante un bucle for recorremos la matriz de los argumentos recibidos y vamos acumulando en suma los datos pasados a la función.

Observa el uso del operador += que suma al contenido de la variable total el valor del elemento datos[item].

Igualmente comprobamos cada dato para calcular cual es el mayor y el menor de todos.

Calcula la media dividieno suma por el numDatos y por último devuelve el resultado como un objeto con las propiedades media, max, min.

Este código podría ser más corto, pero he preferido detallarlo lo mas posible para ilustrar el uso de operadores y hacer el programa más claro.