From afdc136b0ca07bbc1768bb79d24abcbc010737c4 Mon Sep 17 00:00:00 2001 From: Steshin Denis Date: Mon, 14 Mar 2022 16:14:07 +0300 Subject: [PATCH 1/4] task 3 is done --- .eslintrc.js | 170 ++++++++++++++-------------- src/ex3_js-objects-part1/task-01.js | 11 ++ src/ex3_js-objects-part1/task-02.js | 8 ++ src/ex3_js-objects-part1/task-03.js | 10 ++ src/ex3_js-objects-part1/task-04.js | 13 +++ src/ex3_js-objects-part1/task-05.js | 5 + src/ex3_js-objects-part1/task-06.js | 12 ++ src/ex3_js-objects-part1/task-07.js | 19 ++++ 8 files changed, 164 insertions(+), 84 deletions(-) create mode 100644 src/ex3_js-objects-part1/task-01.js create mode 100644 src/ex3_js-objects-part1/task-02.js create mode 100644 src/ex3_js-objects-part1/task-03.js create mode 100644 src/ex3_js-objects-part1/task-04.js create mode 100644 src/ex3_js-objects-part1/task-05.js create mode 100644 src/ex3_js-objects-part1/task-06.js create mode 100644 src/ex3_js-objects-part1/task-07.js diff --git a/.eslintrc.js b/.eslintrc.js index 9db082a8c7..97337109ce 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,84 +1,86 @@ -module.exports = { - extends: ['eslint:recommended', 'airbnb-base'], - env: { - browser: true, - node: true, - jest: true, - es6: true, - }, - parser: 'babel-eslint', - parserOptions: { - sourceType: 'module', - }, - rules: { - 'import/prefer-default-export': 0, - 'import/extensions': 0, - 'max-classes-per-file': 0, - complexity: [0, 11], - 'no-prototype-builtins': 0, - 'prefer-destructuring': 0, - 'no-restricted-globals': 0, - 'consistent-return': 2, - curly: [2, 'multi-line'], - 'default-case': 2, - 'dot-location': 0, - 'dot-notation': [2, { allowKeywords: true }], - eqeqeq: 1, - 'guard-for-in': 1, - 'no-alert': 1, - 'no-caller': 1, - 'no-case-declarations': 2, - 'no-div-regex': 0, - 'no-else-return': 2, - 'no-empty-pattern': 0, - 'no-eq-null': 0, - 'no-eval': 2, - 'no-extend-native': 2, - 'no-extra-bind': 1, - 'no-fallthrough': 2, - 'no-floating-decimal': 2, - 'no-implicit-coercion': 0, - 'no-implied-eval': 2, - 'no-invalid-this': 0, - 'no-iterator': 2, - 'no-labels': [2, { allowLoop: true, allowSwitch: true }], - 'no-lone-blocks': 2, - 'no-loop-func': 1, - 'no-magic-numbers': 0, - 'no-multi-spaces': 2, - 'no-multi-str': 2, - 'no-native-reassign': 2, - 'no-new-func': 2, - 'no-new-wrappers': 2, - 'no-new': 0, - 'no-octal-escape': 2, - 'no-octal': 2, - 'no-console': 0, - 'no-param-reassign': [2, { props: true }], - 'no-process-env': 0, - 'no-proto': 0, - 'no-redeclare': 2, - 'no-return-assign': 2, - 'no-script-url': 2, - 'no-self-compare': 2, - 'no-sequences': 2, - 'no-throw-literal': 2, - 'no-unused-expressions': 2, - 'no-useless-call': 0, - 'no-useless-concat': 0, - 'no-void': 0, - 'no-warning-comments': [0, { terms: ['todo', 'fixme', 'xxx'], location: 'start' }], - 'no-with': 2, - radix: 2, - 'vars-on-top': 0, - 'wrap-iife': [2, 'outside'], - yoda: 2, - }, - settings: { - 'import/resolver': { - node: { - paths: ['./'], - }, - }, - }, -}; +module.exports = { + extends: ['eslint:recommended', 'airbnb-base'], + env: { + browser: true, + node: true, + jest: true, + es6: true, + }, + parser: 'babel-eslint', + parserOptions: { + sourceType: 'module', + }, + rules: { + 'import/prefer-default-export': 0, + 'import/extensions': 0, + 'max-classes-per-file': 0, + complexity: [0, 11], + 'no-prototype-builtins': 0, + 'prefer-destructuring': 0, + 'no-restricted-globals': 0, + 'consistent-return': 2, + curly: [2, 'multi-line'], + 'default-case': 2, + 'dot-location': 0, + 'dot-notation': [2, { allowKeywords: true }], + eqeqeq: 1, + 'guard-for-in': 1, + 'no-alert': 1, + 'no-caller': 1, + 'no-case-declarations': 2, + 'no-div-regex': 0, + 'no-else-return': 2, + 'no-empty-pattern': 0, + 'no-eq-null': 0, + 'no-eval': 2, + 'no-extend-native': 2, + 'no-extra-bind': 1, + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-implicit-coercion': 0, + 'no-implied-eval': 2, + 'no-invalid-this': 0, + 'no-iterator': 2, + 'no-labels': [2, { allowLoop: true, allowSwitch: true }], + 'no-lone-blocks': 2, + 'no-loop-func': 1, + 'no-magic-numbers': 0, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-native-reassign': 2, + 'no-new-func': 2, + 'no-new-wrappers': 2, + 'no-new': 0, + 'no-octal-escape': 2, + 'no-octal': 2, + 'no-console': 0, + 'no-param-reassign': [2, { props: true }], + 'no-process-env': 0, + 'no-proto': 0, + 'no-redeclare': 2, + 'no-return-assign': 2, + 'no-script-url': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-throw-literal': 2, + 'no-unused-expressions': 2, + 'no-useless-call': 0, + 'no-useless-concat': 0, + 'no-void': 0, + 'no-warning-comments': [0, { terms: ['todo', 'fixme', 'xxx'], location: 'start' }], + 'no-with': 2, + 'no-plusplus' : 0, + 'no-bitwise' : 0, + radix: 2, + 'vars-on-top': 0, + 'wrap-iife': [2, 'outside'], + yoda: 2, + }, + settings: { + 'import/resolver': { + node: { + paths: ['./'], + }, + }, + }, +}; diff --git a/src/ex3_js-objects-part1/task-01.js b/src/ex3_js-objects-part1/task-01.js new file mode 100644 index 0000000000..ef176fca52 --- /dev/null +++ b/src/ex3_js-objects-part1/task-01.js @@ -0,0 +1,11 @@ +let person = { + name: "Den", + surname: "Steshin", + age: 26, + birthdate: "26.11.1995", + student: true, + skills: { html: "expert", css: "expert", javascript: "expert" }, + resident: ["Russian Federation", "Ryazan"], +}; + +delete person.age; diff --git a/src/ex3_js-objects-part1/task-02.js b/src/ex3_js-objects-part1/task-02.js new file mode 100644 index 0000000000..b2c60daa97 --- /dev/null +++ b/src/ex3_js-objects-part1/task-02.js @@ -0,0 +1,8 @@ +function showValues(object) { + for (let key in object) { + console.log(key, object[key]); + } + return; +} + +module.exports = showValues(); diff --git a/src/ex3_js-objects-part1/task-03.js b/src/ex3_js-objects-part1/task-03.js new file mode 100644 index 0000000000..dd4bd110aa --- /dev/null +++ b/src/ex3_js-objects-part1/task-03.js @@ -0,0 +1,10 @@ +function checkPropertyInObject(property, object) { + for (let key in object) { + if (property === key && object.hasOwnProperty(key)) { + return true; + } + } + return false; +} + +module.exports = checkPropertyInObject; diff --git a/src/ex3_js-objects-part1/task-04.js b/src/ex3_js-objects-part1/task-04.js new file mode 100644 index 0000000000..f4106fe558 --- /dev/null +++ b/src/ex3_js-objects-part1/task-04.js @@ -0,0 +1,13 @@ +function addValueInObject(string, object) { + for (let key in object) { + if (string === key && object.hasOwnProperty(key)) { + return true; + } + } + + object[string] = "new"; + + return object; +} + +module.exports = addValueInObject; diff --git a/src/ex3_js-objects-part1/task-05.js b/src/ex3_js-objects-part1/task-05.js new file mode 100644 index 0000000000..ef4b2ba94b --- /dev/null +++ b/src/ex3_js-objects-part1/task-05.js @@ -0,0 +1,5 @@ +function cloneObject(object) { + return Object.assign({}, object); +} + +module.exports = cloneObject; diff --git a/src/ex3_js-objects-part1/task-06.js b/src/ex3_js-objects-part1/task-06.js new file mode 100644 index 0000000000..03c78d1fad --- /dev/null +++ b/src/ex3_js-objects-part1/task-06.js @@ -0,0 +1,12 @@ +function getProperty(object, propertyPath) { + let currentObject = object; + + for (let property of propertyPath.split(".")) { + if (currentObject == null) return undefined; + currentObject = currentObject[property]; + } + + return currentObject; +} + +module.exports = getProperty; diff --git a/src/ex3_js-objects-part1/task-07.js b/src/ex3_js-objects-part1/task-07.js new file mode 100644 index 0000000000..05b4dd7c6b --- /dev/null +++ b/src/ex3_js-objects-part1/task-07.js @@ -0,0 +1,19 @@ +function deepCloneObject(object) { + let copyDeepObject = {}; + for (let key in object) { + if ( + typeof object[key] === "object" && + object[key] !== null && + !(object[key] instanceof Array) + ) { + copyDeepObject[key] = deepCloneObject(object[key]); + } else if (object[key] instanceof Array) { + copyDeepObject[key] = object[key].slice(0); + } else { + copyDeepObject[key] = object[key]; + } + } + return copyDeepObject; +} + +module.exports = deepCloneObject; From 673b3503770e794ad500704d615269d68e0a0fb2 Mon Sep 17 00:00:00 2001 From: Steshin Denis Date: Mon, 14 Mar 2022 16:18:04 +0300 Subject: [PATCH 2/4] fix task-01 in ex3 --- src/ex3_js-objects-part1/task-01.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ex3_js-objects-part1/task-01.js b/src/ex3_js-objects-part1/task-01.js index ef176fca52..9a3abf1b10 100644 --- a/src/ex3_js-objects-part1/task-01.js +++ b/src/ex3_js-objects-part1/task-01.js @@ -1,4 +1,4 @@ -let person = { +const person = { name: "Den", surname: "Steshin", age: 26, From 434b39dd7515b7225ab44462ddcf0c39bd7c0a57 Mon Sep 17 00:00:00 2001 From: Steshin Denis Date: Mon, 14 Mar 2022 16:22:47 +0300 Subject: [PATCH 3/4] fix singlequotes --- src/ex3_js-objects-part1/task-01.js | 10 +++++----- src/ex3_js-objects-part1/task-04.js | 2 +- src/ex3_js-objects-part1/task-06.js | 2 +- src/ex3_js-objects-part1/task-07.js | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ex3_js-objects-part1/task-01.js b/src/ex3_js-objects-part1/task-01.js index 9a3abf1b10..867ca367ce 100644 --- a/src/ex3_js-objects-part1/task-01.js +++ b/src/ex3_js-objects-part1/task-01.js @@ -1,11 +1,11 @@ const person = { - name: "Den", - surname: "Steshin", + name: 'Den', + surname: 'Steshin', age: 26, - birthdate: "26.11.1995", + birthdate: '26.11.1995', student: true, - skills: { html: "expert", css: "expert", javascript: "expert" }, - resident: ["Russian Federation", "Ryazan"], + skills: { html: 'expert', css: 'expert', javascript: 'expert' }, + resident: ['Russian Federation', 'Ryazan'], }; delete person.age; diff --git a/src/ex3_js-objects-part1/task-04.js b/src/ex3_js-objects-part1/task-04.js index f4106fe558..5cff23c20a 100644 --- a/src/ex3_js-objects-part1/task-04.js +++ b/src/ex3_js-objects-part1/task-04.js @@ -5,7 +5,7 @@ function addValueInObject(string, object) { } } - object[string] = "new"; + object[string] = 'new'; return object; } diff --git a/src/ex3_js-objects-part1/task-06.js b/src/ex3_js-objects-part1/task-06.js index 03c78d1fad..c5f211a2c6 100644 --- a/src/ex3_js-objects-part1/task-06.js +++ b/src/ex3_js-objects-part1/task-06.js @@ -1,7 +1,7 @@ function getProperty(object, propertyPath) { let currentObject = object; - for (let property of propertyPath.split(".")) { + for (let property of propertyPath.split('.')) { if (currentObject == null) return undefined; currentObject = currentObject[property]; } diff --git a/src/ex3_js-objects-part1/task-07.js b/src/ex3_js-objects-part1/task-07.js index 05b4dd7c6b..4e4249c892 100644 --- a/src/ex3_js-objects-part1/task-07.js +++ b/src/ex3_js-objects-part1/task-07.js @@ -2,7 +2,7 @@ function deepCloneObject(object) { let copyDeepObject = {}; for (let key in object) { if ( - typeof object[key] === "object" && + typeof object[key] === 'object' && object[key] !== null && !(object[key] instanceof Array) ) { From 7aa4499dc4b7bb0939db17aef6e8c64e3c7249eb Mon Sep 17 00:00:00 2001 From: Steshin Denis Date: Mon, 21 Mar 2022 22:00:32 +0300 Subject: [PATCH 4/4] lint --- src/ex3_js-objects-part1/task-01.js | 22 ++++++++--------- src/ex3_js-objects-part1/task-02.js | 15 ++++++------ src/ex3_js-objects-part1/task-03.js | 20 +++++++-------- src/ex3_js-objects-part1/task-04.js | 26 ++++++++++---------- src/ex3_js-objects-part1/task-05.js | 10 ++++---- src/ex3_js-objects-part1/task-06.js | 24 +++++++++--------- src/ex3_js-objects-part1/task-07.js | 38 ++++++++++++++--------------- src/ex4_js-objects-part2/task-01.js | 0 8 files changed, 77 insertions(+), 78 deletions(-) create mode 100644 src/ex4_js-objects-part2/task-01.js diff --git a/src/ex3_js-objects-part1/task-01.js b/src/ex3_js-objects-part1/task-01.js index 867ca367ce..921636f10b 100644 --- a/src/ex3_js-objects-part1/task-01.js +++ b/src/ex3_js-objects-part1/task-01.js @@ -1,11 +1,11 @@ -const person = { - name: 'Den', - surname: 'Steshin', - age: 26, - birthdate: '26.11.1995', - student: true, - skills: { html: 'expert', css: 'expert', javascript: 'expert' }, - resident: ['Russian Federation', 'Ryazan'], -}; - -delete person.age; +const person = { + name: 'Den', + surname: 'Steshin', + age: 26, + birthdate: '26.11.1995', + student: true, + skills: { html: 'expert', css: 'expert', javascript: 'expert' }, + resident: ['Russian Federation', 'Ryazan'], +}; + +delete person.age; diff --git a/src/ex3_js-objects-part1/task-02.js b/src/ex3_js-objects-part1/task-02.js index b2c60daa97..83862b96c2 100644 --- a/src/ex3_js-objects-part1/task-02.js +++ b/src/ex3_js-objects-part1/task-02.js @@ -1,8 +1,7 @@ -function showValues(object) { - for (let key in object) { - console.log(key, object[key]); - } - return; -} - -module.exports = showValues(); +function showValues(object) { + for (const key in object) { + console.log(key, object[key]); + } +} + +module.exports = showValues(); diff --git a/src/ex3_js-objects-part1/task-03.js b/src/ex3_js-objects-part1/task-03.js index dd4bd110aa..940f6099d5 100644 --- a/src/ex3_js-objects-part1/task-03.js +++ b/src/ex3_js-objects-part1/task-03.js @@ -1,10 +1,10 @@ -function checkPropertyInObject(property, object) { - for (let key in object) { - if (property === key && object.hasOwnProperty(key)) { - return true; - } - } - return false; -} - -module.exports = checkPropertyInObject; +function checkPropertyInObject(property, object) { + for (const key in object) { + if (property === key && object.hasOwnProperty(key)) { + return true; + } + } + return false; +} + +module.exports = checkPropertyInObject; diff --git a/src/ex3_js-objects-part1/task-04.js b/src/ex3_js-objects-part1/task-04.js index 5cff23c20a..15170cc05e 100644 --- a/src/ex3_js-objects-part1/task-04.js +++ b/src/ex3_js-objects-part1/task-04.js @@ -1,13 +1,13 @@ -function addValueInObject(string, object) { - for (let key in object) { - if (string === key && object.hasOwnProperty(key)) { - return true; - } - } - - object[string] = 'new'; - - return object; -} - -module.exports = addValueInObject; +function addValueInObject(string, object) { + for (const key in object) { + if (string === key && object.hasOwnProperty(key)) { + return true; + } + } + + object[string] = 'new'; + + return object; +} + +module.exports = addValueInObject; diff --git a/src/ex3_js-objects-part1/task-05.js b/src/ex3_js-objects-part1/task-05.js index ef4b2ba94b..9aa6e154d1 100644 --- a/src/ex3_js-objects-part1/task-05.js +++ b/src/ex3_js-objects-part1/task-05.js @@ -1,5 +1,5 @@ -function cloneObject(object) { - return Object.assign({}, object); -} - -module.exports = cloneObject; +function cloneObject(object) { + return { ...object }; +} + +module.exports = cloneObject; diff --git a/src/ex3_js-objects-part1/task-06.js b/src/ex3_js-objects-part1/task-06.js index c5f211a2c6..a7b9dbfada 100644 --- a/src/ex3_js-objects-part1/task-06.js +++ b/src/ex3_js-objects-part1/task-06.js @@ -1,12 +1,12 @@ -function getProperty(object, propertyPath) { - let currentObject = object; - - for (let property of propertyPath.split('.')) { - if (currentObject == null) return undefined; - currentObject = currentObject[property]; - } - - return currentObject; -} - -module.exports = getProperty; +function getProperty(object, propertyPath) { + let currentObject = object; + + for (const property of propertyPath.split('.')) { + if (currentObject == null) return undefined; + currentObject = currentObject[property]; + } + + return currentObject; +} + +module.exports = getProperty; diff --git a/src/ex3_js-objects-part1/task-07.js b/src/ex3_js-objects-part1/task-07.js index 4e4249c892..0da1dd1048 100644 --- a/src/ex3_js-objects-part1/task-07.js +++ b/src/ex3_js-objects-part1/task-07.js @@ -1,19 +1,19 @@ -function deepCloneObject(object) { - let copyDeepObject = {}; - for (let key in object) { - if ( - typeof object[key] === 'object' && - object[key] !== null && - !(object[key] instanceof Array) - ) { - copyDeepObject[key] = deepCloneObject(object[key]); - } else if (object[key] instanceof Array) { - copyDeepObject[key] = object[key].slice(0); - } else { - copyDeepObject[key] = object[key]; - } - } - return copyDeepObject; -} - -module.exports = deepCloneObject; +function deepCloneObject(object) { + const copyDeepObject = {}; + for (const key in object) { + if ( + typeof object[key] === 'object' + && object[key] !== null + && !(object[key] instanceof Array) + ) { + copyDeepObject[key] = deepCloneObject(object[key]); + } else if (object[key] instanceof Array) { + copyDeepObject[key] = object[key].slice(0); + } else { + copyDeepObject[key] = object[key]; + } + } + return copyDeepObject; +} + +module.exports = deepCloneObject; diff --git a/src/ex4_js-objects-part2/task-01.js b/src/ex4_js-objects-part2/task-01.js new file mode 100644 index 0000000000..e69de29bb2