diff --git a/src/transformStateWithClones.js b/src/transformStateWithClones.js index 96d4f7e7e..e4f2be15d 100644 --- a/src/transformStateWithClones.js +++ b/src/transformStateWithClones.js @@ -7,7 +7,34 @@ * @return {Object[]} */ function transformStateWithClones(state, actions) { - // write code here + let currentState = { ...state }; + const stateHistory = []; + + for (const action of actions) { + let newState; + + switch (action.type) { + case 'clear': + newState = {}; + break; + case 'addProperties': + newState = { ...currentState, ...action.extraData }; + break; + case 'removeProperties': + newState = { ...currentState }; + + for (const key of action.keysToRemove) { + delete newState[key]; + } + break; + default: + newState = { ...currentState }; + } + stateHistory.push(newState); + currentState = newState; + } + + return stateHistory; } module.exports = transformStateWithClones;