Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const assert = require("assert");
- /**
- * Write some code, that will flatten an array of arbitrarily nested arrays of integers into a flat array of integers. e.g. [[1,2,[3]],4] -> [1,2,3,4].
- */
- function flattenArray(array) {
- if (!Array.isArray(array)) {
- throw new Error("Array expected");
- }
- return array.reduce(
- (accumulator, element) =>
- accumulator.concat(Array.isArray(element) ? flattenArray(element) : element),
- []
- );
- }
- assert.deepStrictEqual(flattenArray([[1,2,[3]],4]), [1,2,3,4], "Should flatten any nested array");
- assert.deepStrictEqual(flattenArray([1,2,3,4]), [1,2,3,4], "Should not flatten if not needed");
- assert.deepStrictEqual(flattenArray([]), [], "Should flatten empty array");
- assert.deepStrictEqual(flattenArray([[]]), [], "Should flatten nested empty arrays");
- const errorValues = [
- null, undefined, {}, 1, "string", Date()
- ]
- errorValues.forEach(errorValue => {
- assert.throws(() => flattenArray(errorValue), 'Should throw an error when not an array is provided')
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement