diff --git a/snippets/deepClone.md b/snippets/deepClone.md index e7707918f..de791ee7e 100644 --- a/snippets/deepClone.md +++ b/snippets/deepClone.md @@ -8,12 +8,13 @@ Use `Object.keys()` and `Array.forEach()` to determine which key-value pairs nee ```js + const deepClone = obj => { - let clone = Object.assign({}, obj); - Object.keys(clone).forEach( - key => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]) - ); - return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : obj; + let clone = Object.assign({}, obj); + Object.keys(clone).forEach( + key => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]) + ); + return Array.isArray(obj) ? Array.from(clone) : clone; }; ``` @@ -21,6 +22,7 @@ const deepClone = obj => { + const a = { foo: 'bar', obj: { a: 1, b: 2 } }; const b = deepClone(a); // a !== b, a.obj !== b.obj ``` diff --git a/test/deepClone/deepClone.js b/test/deepClone/deepClone.js index f613e5660..62e3364ff 100644 --- a/test/deepClone/deepClone.js +++ b/test/deepClone/deepClone.js @@ -3,6 +3,6 @@ let clone = Object.assign({}, obj); Object.keys(clone).forEach( key => (clone[key] = typeof obj[key] === 'object' ? deepClone(obj[key]) : obj[key]) ); -return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : obj; +return Array.isArray(obj) ? Array.from(clone) : clone; }; -module.exports = deepClone; \ No newline at end of file +module.exports = deepClone;