dimanche 30 octobre 2016

Check against two arrays using for loop and if statement

I'm trying to run a check against two arrays (one has 4 objects, one just have a few strings) with for loops and if statement for a problem set.

The idea is to use for loop to iterate over every element in the object array and the string array, then use if statement to figure out matches and shove the matching string into a new array. Once all the elements are iterated, it returns the string if there is a matching one.

The problem is the function calls it a day once a single match in the object array is found and returns that only that instead of iterating over the rest of the elements in the object array.

var passengers = [
                                        { name: ["Michael Jackson"], paid: true }, 
                                        { name: ["Osama"], paid: false }, 
                                        { name: ["Harambe"], paid: true },
                                        { name: ["Pepe"], paid: true },
                                ];

var noFlyList = ["Jimmy", "John", "Pepe", "Osama"];

function checkNoFly(passengers, noFlyList) {
        for (var i = 0; i < passengers.length; i++) {
                for (var j = 0; j < noFlyList.length; j++) {
                        if (passengers[i].name[0] == noFlyList[j]) {
                                var passengerList = [];
                                passengerList.push(passengers[i].name[0]);
                                return passengerList;
                        }
                }
        }
        return true;
}

function processPassenger(passengers, testFunction) {
        for (var i = 0; i < passengers.length; i++) {
                if (testFunction(passengers[i])) {
                        return false;
                }
        }
        return true;
}

var allCanFly = processPassenger(passengers, checkNoFly);
if (!allCanFly) {
        console.log("We cannot fly because " + checkNoFly(passengers, noFlyList) + " is on the no-fly list");
}

Aucun commentaire:

Enregistrer un commentaire