diff --git a/src/transformStateWithClones.js b/src/transformStateWithClones.js index 96d4f7e7e..1c5d4ce04 100644 --- a/src/transformStateWithClones.js +++ b/src/transformStateWithClones.js @@ -7,7 +7,38 @@ * @return {Object[]} */ function transformStateWithClones(state, actions) { - // write code here + const history = []; + let prevState = state; + + for (let i = 0; i < actions.length; i++) { + const action = actions[i]; + let nextState; + + switch (action.type) { + case 'addProperties': + nextState = Object.assign({}, prevState, action.extraData); + break; + + case 'removeProperties': + nextState = Object.assign({}, prevState); + + for (const k of action.keysToRemove) { + delete nextState[k]; + } + break; + + case 'clear': + nextState = {}; + break; + default: + continue; + } + + history.push(nextState); + prevState = nextState; + } + + return history; } module.exports = transformStateWithClones;