diff --git a/snippets/flatten.md b/snippets/flatten.md index a4ca535b4..2154971a9 100644 --- a/snippets/flatten.md +++ b/snippets/flatten.md @@ -16,4 +16,5 @@ const flatten = (arr, depth = 1) => ```js flatten([1, [2], 3, 4]); // [1, 2, 3, 4] +flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8] ``` diff --git a/test/flatten/flatten.js b/test/flatten/flatten.js index 845b9c916..727e22a60 100644 --- a/test/flatten/flatten.js +++ b/test/flatten/flatten.js @@ -1 +1,4 @@ -module.exports = flatten = arr => [].concat(...arr); \ No newline at end of file +module.exports = flatten = (arr, depth = 1) => +depth != 1 +? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), []) +: arr.reduce((a, v) => a.concat(v), []); \ No newline at end of file diff --git a/test/flatten/flatten.test.js b/test/flatten/flatten.test.js index 61ae1f055..e7741039f 100644 --- a/test/flatten/flatten.test.js +++ b/test/flatten/flatten.test.js @@ -6,6 +6,7 @@ test('Testing flatten', (t) => { //Please go to https://github.com/substack/tape t.true(typeof flatten === 'function', 'flatten is a Function'); t.deepEqual(flatten([1, [2], 3, 4]), [1, 2, 3, 4], "Flattens an array"); + t.deepEqual(flatten([1, [2, [3, [4, 5], 6], 7], 8], 2), [1, 2, 3, [4, 5], 6, 7, 8], "Flattens an array"); //t.deepEqual(flatten(args..), 'Expected'); //t.equal(flatten(args..), 'Expected'); //t.false(flatten(args..), 'Expected');