diff --git a/src/transformStateWithClones.js b/src/transformStateWithClones.js index 96d4f7e7e..cfe7bb8af 100644 --- a/src/transformStateWithClones.js +++ b/src/transformStateWithClones.js @@ -7,7 +7,33 @@ * @return {Object[]} */ function transformStateWithClones(state, actions) { - // write code here + let stateCopy = { ...state }; + const stateHistory = []; + + for (let i = 0; i < actions.length; i++) { + const { type, extraData, keysToRemove } = actions[i]; + + switch (type) { + case 'addProperties': + stateCopy = { ...stateCopy, ...extraData }; + break; + case 'removeProperties': + stateCopy = { ...stateCopy }; + + for (let q = 0; q < keysToRemove.length; q++) { + delete stateCopy[keysToRemove[q]]; + } + break; + case 'clear': + stateCopy = {}; + break; + default: + break; + } + stateHistory.push({ ...stateCopy }); + } + + return stateHistory; } module.exports = transformStateWithClones;