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);