Skip to content

Instantly share code, notes, and snippets.

@duncan60
Last active December 22, 2015 06:54
Show Gist options
  • Save duncan60/2ecdf52df72a663363b5 to your computer and use it in GitHub Desktop.
Save duncan60/2ecdf52df72a663363b5 to your computer and use it in GitHub Desktop.
es7 immutable
let NBA = {
season : {
year : '2017',
start: '2016-10',
end : '2017-6',
state: 'active'
},
players: [
{
name : 'duncan',
level: 's',
state: 'active'
}
]
}
//add Players
let newPlayer = {
name : 'kobe',
level: 'a',
state: 'active'
},
players = [
...NBA.players,
newPlayer,
];
NBA = {
...NBA,
players
};
console.log('[add Players] NBA =>', NBA);
//update Players
let updatePlayer = {
name : 'kobe',
level: 'a',
state: 'retirement'
};
NBA = {
...NBA,
players: NBA.players.map(player => player.name === updatePlayer.name ? {...updatePlayer} : player)
};
console.log('[update Players] NBA =>', NBA);
//update season
let updateSeason = {
state : 'complete',
champion: 'spurs'
};
NBA = {
...NBA,
season: {
...NBA.season,
...updateSeason
}
};
console.log('[update season] NBA =>', NBA);
//update season 2
let season = {
...NBA.season,
state : 'complete',
champion: 'spurs'
};
NBA = {
...NBA,
season
};
console.log('[update season 2] NBA =>', NBA);
let list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
//add single
let addItem = 30;
list = [
...list,
addItem
];
console.log('[add single] list =>', list);
//console list => [1,2,3,4,5,6,7,8,9,10,30]
//remove single
let removeItem = 2;
list = [
...list.filter(item => item !== removeItem)
];
console.log('[remove single] list =>', list);
//console list => [1,3,4,5,6,7,8,9,10,30]
//add not repeat plural
let addList= [2,5,12,1,15];
list = [
...list,
...addList.filter(item => !list.includes(item))
]
console.log('[add not repeat plural] list =>', list);
//console list => [1,3,4,5,6,7,8,9,10,30,2,12,15]
//remove plural
let removeList = [3, 9, 10, 1];
list = [
...list.filter(item => !removeList.includes(item))
];
console.log('[remove plural] list =>', list);
//console list => [4,5,6,7,8,30,2,12,15]
let nbaPlayers = {
Duncan: {
age : 39,
team : 'Spurs',
experience: ['Spurs']
},
Howard: {
age : 30,
team : 'Rockets',
experience: ['Magic', 'Lakers', 'Rockets']
}
};
//update age
Object.keys(nbaPlayers).forEach((key) => {
let age = nbaPlayers[key]['age'] + 1
nbaPlayers = {
...nbaPlayers,
[key]: {
...nbaPlayers[key],
age
}
};
});
console.log('[update age] nbaPlayers =>', nbaPlayers);
//Howard change Team
let player = 'Howard',
newTeam = 'Knicks';
nbaPlayers = {
...nbaPlayers,
[player]: {
...nbaPlayers[player],
team: newTeam,
experience: [
...nbaPlayers[player]['experience'],
newTeam
]
}
};
console.log('[Howard change Team] nbaPlayers =>', nbaPlayers);
//Howard change Team 2
newTeam = 'Heat';
let experience = [
...nbaPlayers[player]['experience'],
newTeam
],
updatePlayer = {
...nbaPlayers[player],
team: newTeam,
experience
};
nbaPlayers = {
...nbaPlayers,
[player]: updatePlayer
};
console.log('[Howard change Team 2] nbaPlayers =>', nbaPlayers);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment