Last active
December 22, 2015 06:54
-
-
Save duncan60/2ecdf52df72a663363b5 to your computer and use it in GitHub Desktop.
es7 immutable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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