JS - Higher-order functions - Lists
by Zacc206
JavaScript
console.clear()
function Log(title, output){
console.info('===== ' + title + ' =====');
console.log('');
console.log(output);
console.log('');
console.info('============================================================');
}
var vehicles = [
{
make: 'Jeep',
model: 'Wrangler',
trim: 'YJ',
year: 1995,
doors: 2,
removableTop: 1
},
{
make: 'Jeep',
model: 'Cherokee',
trim: 'XJ',
year: 1998,
doors: 4,
removableTop: 0
},
{
make: 'Jeep',
model: 'Cherokee Sport',
trim: 'XJ',
year: 2000,
doors: 2,
removableTop: 0
},
{
make: 'Jeep',
model: 'Cherokee',
trim: 'KL',
year: 2014,
doors: 4,
removableTop: 0
}
];
// Map
var models = vehicles.map(function(obj){
return obj.model;
});
Log('.map', models);
// Filter
var convertibles = vehicles.filter(function(obj){
return obj.removableTop === 1;
});
Log('.filter', convertibles);
// Reduce
var totalDoors = vehicles.reduce(function(sum, vehicle){
return sum + vehicle.doors;
}, 0);
var allVehicleNames = vehicles.reduce(function(output, vehicle, index, arr){
if(index === 0){
return output += vehicle.year + " " + vehicle.model;
}
else if(index === arr.length - 1){
return output += ", and a " + vehicle.year + " " + vehicle.model + ".";
} else {
return output += ", " + vehicle.year + " " + vehicle.model;
}
}, '');
Log('.reduce', totalDoors);
Log('.reduce', "I have a " + allVehicleNames);