From 0e306ae255e7c593283500642ccac269b7d028be Mon Sep 17 00:00:00 2001 From: Ihor Korshylivskyi Date: Sun, 13 Oct 2024 12:47:35 +0300 Subject: [PATCH] Solution --- src/transformStateWithClones.js | 49 ++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/transformStateWithClones.js b/src/transformStateWithClones.js index 96d4f7e7e..acf6f4203 100644 --- a/src/transformStateWithClones.js +++ b/src/transformStateWithClones.js @@ -7,7 +7,54 @@ * @return {Object[]} */ function transformStateWithClones(state, actions) { - // write code here + const result = []; + const stateCopy = { ...state }; + let changeState = stateCopy; + + for (const action of actions) { + switch (action.type) { + case 'addProperties': + { + const addState = Object.assign({}, changeState, action.extraData); + + result.push(addState); + changeState = addState; + } + break; + + case 'removeProperties': + { + const arr = action.keysToRemove; + const removeState = { ...changeState }; + + for (const ch of arr) { + delete removeState[ch]; + } + + result.push(removeState); + changeState = removeState; + } + break; + + case 'clear': + { + const clearState = { ...changeState }; + + for (const key in clearState) { + delete clearState[key]; + } + + result.push(clearState); + changeState = clearState; + } + break; + + default: + break; + } + } + + return result; } module.exports = transformStateWithClones;