JSFiddle - React, Tailwind, and code Playground

by didacticode

HTML

<!DOCTYPE html>
<html lang="es">
<head>
    <title>Gestión de pasajeros del expreso de Hogwarts - Recorrer array bidimensional</title>
    <meta charset="utf-8"/>
    <style>
        body{
            background-image: url(vias.jpg);
            background-size: cover;
            padding: 0;
            color: white;
            font-family: sans-serif;
        }
    </style>
    <script src="Reto03_HarryPotter.js"></script>
</head>
<body>
</body>

JavaScript

let pasajeros = [[10,0],[3,5],[5,2],[4,6],[3,3]]; // SALIDA: 9

// Función que, a partir de un array bidimensional de pasajeros, devuelve el número de pasajeros que quedan en el tren
function hogwarts (pasajeros) {
    let total = 0;

    for (let i = 0; i<pasajeros.length; i++){
        total += pasajeros[i][0];
        total -= pasajeros[i][1];
        //total = total + pasajeros[i][0] - pasajeros[i][1];
    }
    return total;
}
console.log(hogwarts(pasajeros));

/* La función reduce tiene dos argumentos: una función arrow y un valor de partida del acumulador: 0 en este caso
   La función arrow tiene en el primer argumento el acumulador, y en el segundo el 
   elemento que queremos reducir (que en este caso, es un array de dos elementos)
   Esta función devuelve el acumulador más el número que hay en la primera posición 
   del array menos la segunda; se repite hasta que finaliza el array */
   
   // función reductora = (acumulador, valorActual) => acumulador operador valorActual;

let hogwarts2 = (pasajeros) => pasajeros.reduce((acumulador,[suben,bajan]) => acumulador + suben - bajan,0);
console.log(hogwarts2(pasajeros));

/* En esta versión consideramos, en lugar de especificar que es un array de dos elementos,
   indicamos el array y lo procesamos dentro de la función extrayendo cada elemento. */
let hogwarts3 = (pasajeros) => pasajeros.reduce((acumulador, pasajeros) => acumulador + pasajeros[0] - pasajeros[1],0);
console.log(hogwarts3(pasajeros));