We want some code that will help us manage collections of cute monsters and allow us to test our abilities as trainers in the field of battle!
Primatives are already immutable!
const worse = { status: 'not so awesome' };
const upgradeStatus = current => Object.assign({}, current, { status: 'awesome' });
const better = upgradeStatus(worse);
worse.status
// => 'not so awesome'
better.status
// => 'awesome'
Object.assign({}, better, { identity: 'UtahJS Attendee' });
// { status: 'awesome', identity: 'UtahJS attendee' }const worse = { status: 'not so awesome' };
const upgradeStatus = current => ({ ...current, status: 'awesome' });
const better = upgradeStatus(worse);
worse.status
// => 'not so awesome'
better.status
// => 'awesome
{ ...better, identity: 'UtahJS Attendee' };
// { status: 'awesome', identity: 'UtahJS attendee' }const worseStatuses = [{ status: 'not so awesome' }];
const upgradeStatus = current => ({ ...current, status: 'awesome' });
const upgradeStatuses = currentStatuses => currentStatuses.map(upgradeStatus);
const betterStatuses = upgradeStatus(worse);
worseStatuses[0].status
// => 'no so awesome'
betterStatuses[0].status
// => 'awesomeconst worseStatuses = [{ status: 'not so awesome' }, { status: 'awesome' }];
const isAwesome = current => current.status === 'awesome';
const awesomeStatuses = statuses.filter(isAwesome);
worseStatuses.map(current => current.status)
// => ['not so awesome', 'awesome']
awesomeStatuses.map(current => current.status)
// => ['awesome']
const statuses = [{ status: 'not so awesome' }, { status: 'awesome' }];
const statusStringReducer = (accumulator, current) => accumulator + ' "' + current.status +'"';
statuses.reduce(statusStringReducer, 'All statuses:');
//All statuses: "not so awesome" "awesome"const statuses = [{ status: 'not so awesome' }, { status: 'awesome' }];
const newStatuses = [...statuses, { status: 'super duper' }];
statuses;
// [{ status: 'not so awesome' }, { status: 'awesome' }]
newStatuses;
// [{ status: 'not so awesome' }, { status: 'awesome' }, { status: 'super duper' }]
const addTo = arr => new => [...arr, new]
const addToStatuses = addTo(statuses);
const newerStatuses = addToStatuses({ status: 'a little tired' });
statuses;
// [{ status: 'not so awesome' }, { status: 'awesome' }]
newStatuses;
// [{ status: 'not so awesome' }, { status: 'awesome' }, { status: 'super duper' }]
newerStatuses;
// [{ status: 'not so awesome' },
{ status: 'awesome' },
{ status: 'super duper' },
{ status: 'a little tired' }]Refactor code!