From d9e2cd4822e3cc24c824ad709f4dfff69ed95e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=B0=D0=B4=D0=BC=D1=96=D0=BD?= Date: Tue, 18 Jul 2023 15:33:53 +0300 Subject: [PATCH 1/2] Added transformState --- src/transformState.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/transformState.js b/src/transformState.js index a1eaa0640..8df4714b1 100644 --- a/src/transformState.js +++ b/src/transformState.js @@ -5,7 +5,29 @@ * @param {Object[]} actions */ function transformState(state, actions) { - // write code here + for (const action of actions) { + switch (action.type) { + case 'addProperties': + Object.assign(state, action.extraData); + break; + case 'removeProperties': + for (const key of action.keysToRemove) { + if (state.hasOwnProperty(key)) { + delete state[key]; + } + } + break; + case 'clear': + for (const key in state) { + if (state.hasOwnProperty(key)) { + delete state[key]; + } + } + break; + default: + break; + } + } } module.exports = transformState; From af87ca2379b0c5065b402640938ffcc57b03f20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=B0=D0=B4=D0=BC=D1=96=D0=BD?= Date: Wed, 19 Jul 2023 13:55:05 +0300 Subject: [PATCH 2/2] Fixed the mistakes --- src/transformState.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/transformState.js b/src/transformState.js index 8df4714b1..638b0c97a 100644 --- a/src/transformState.js +++ b/src/transformState.js @@ -5,11 +5,14 @@ * @param {Object[]} actions */ function transformState(state, actions) { - for (const action of actions) { + for (let i = 0; i < actions.length; i++) { + const action = actions[i]; + switch (action.type) { case 'addProperties': Object.assign(state, action.extraData); break; + case 'removeProperties': for (const key of action.keysToRemove) { if (state.hasOwnProperty(key)) { @@ -17,13 +20,13 @@ function transformState(state, actions) { } } break; + case 'clear': for (const key in state) { - if (state.hasOwnProperty(key)) { - delete state[key]; - } + delete state[key]; } break; + default: break; }