From dfd3c91f150a62f0de7809b41d5d117043d8f66a Mon Sep 17 00:00:00 2001 From: Szymon Pachucki Date: Tue, 25 Jul 2023 15:14:13 +0200 Subject: [PATCH 1/2] Solution --- src/transformState.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/transformState.js b/src/transformState.js index a1eaa0640..be8ddd5b0 100644 --- a/src/transformState.js +++ b/src/transformState.js @@ -5,7 +5,36 @@ * @param {Object[]} actions */ function transformState(state, actions) { - // write code here + for (const currentAction of actions) { + switch (currentAction.type) { + case 'addProperties': + const extraData = currentAction.extraData; + + for (const key in extraData) { + state[key] = extraData[key]; + } + break; + + case 'removeProperties': + const keysToRemove = currentAction.keysToRemove; + + for (const key of keysToRemove) { + if (state.hasOwnProperty(key)) { + delete state[key]; + } + } + break; + + case 'clear': + for (const key in state) { + delete state[key]; + } + break; + + default: + break; + } + } } module.exports = transformState; From dbe0ae0f6374677f1b3bcf82af5bcb3fc5af30c1 Mon Sep 17 00:00:00 2001 From: Szymon Pachucki Date: Thu, 27 Jul 2023 11:31:04 +0200 Subject: [PATCH 2/2] Solution --- src/transformState.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/transformState.js b/src/transformState.js index be8ddd5b0..6dfccfd6b 100644 --- a/src/transformState.js +++ b/src/transformState.js @@ -10,15 +10,15 @@ function transformState(state, actions) { case 'addProperties': const extraData = currentAction.extraData; - for (const key in extraData) { - state[key] = extraData[key]; - } + Object.assign(state, extraData); + break; case 'removeProperties': const keysToRemove = currentAction.keysToRemove; for (const key of keysToRemove) { + // is it not easier this way, than with object destructuring? if (state.hasOwnProperty(key)) { delete state[key]; } @@ -32,7 +32,7 @@ function transformState(state, actions) { break; default: - break; + throw new Error('incorrect type'); } } }