# Higher-order Function Exercise

We will use the given array helpers to transform the given `for` loops away from being `for` loops.

Here is some data you can use, feel free to add more car objects to it:

``````const cars = [
{
make: "ford",
model: "E150",
year: 2000
},
{
make: "chevy",
model: "malibu",
year: 2017
},
{
make: "chevy",
model: "malibu",
year: 2003
},
{
make: "ford",
model: "E150",
year: 1999
},
{
make: "chevy",
model: "sedan",
year: 2009
},
]
``````

Use `.forEach()` to replace the following `for` loop.

``````for (let i = 0; i < cars.length; i++) {
console.log(`\${cars[i].length} goes vroom`);
}
``````

Use `.map()` to replace the following `for` loop.

``````var angryCars = [];

for (let i = 0; i < cars.length; i++) {
angryCars.push(cars[i].make.toUpperCase());
}
``````

Use `.filter()` to replace the following `for` loop.

``````var newCars = [];

for (let i = 0; i < cars.length; i++) {
if (cars[i].year > 2005){
newCars.push(cars[i]);
}
}
``````

Use `.find()` to replace the following `for` loop.

``````for (let i = 0; i < cars.length; i++) {
if (cars[i].model === "E150"){
let coolVan = cars[i];
break;
}
}
``````

Use `.some()` to replace the following `for` loop.

``````for (let i = 0; i < cars.length; i++) {
if (cars[i].model === "E150"){
console.log("It is true that there is one or more E150s");
break;
}
}
``````

Use `.every()` to replace the following `for` loop.

``````for (let i = 0; i < cars.length; i++) {
if (cars[i].model != "E150"){
console.log("It is false that every car is an E150");
break;
}
}
``````

Use `.reduce()` to replace the following `for` loop and carTotals definition.

``````var numberOfFords = 0;
var numberOfChevys = 0;

for (let i = 0; i < cars.length; i++) {
if (cars[i].make === "ford"){
numberOfFords ++;
}
if (cars[i].make === "chevy"){
numberOfchevys ++;
}
}

let carTotals = { numberOfFords: numberOfFords, numberOfChevys: numberOfChevys }
``````