Skip to content

Instantly share code, notes, and snippets.

@ajmeyghani
Created March 24, 2017 23:17
Show Gist options
  • Save ajmeyghani/81193197084727178a5cc839f014aac6 to your computer and use it in GitHub Desktop.
Save ajmeyghani/81193197084727178a5cc839f014aac6 to your computer and use it in GitHub Desktop.
Flattening an Array of array of array of ..... arrays.
var assert = require('assert');
/**
* Flattens array that are nested at n levels.
* @param {Array} arr The array to be flattened
* @return {Array} New array with flattened elements.
* ----------------------------------------------------------
*/
function flatten(arr) {
if(!arr) {
return [];
}
return arr.reduce((c,v) => {
if(Array.isArray(v)){
return c.concat(flatten(v));
}
return c.concat(v);
}, []);
}
var case0 = [];
var case1 = [[[[[[[[[[[[[[[[[[[[1]]]]]]]]]]]]]]]]]]], 2];
var case2 = [1, [2], [[3]], [4,[[5, [6]], [7]],[[[8]]]], 9, [10]];
var caseNull = null;
assert.deepEqual(flatten(case0), []);
assert.deepEqual(flatten(case1), [1,2]);
assert.deepEqual(flatten(case2), [1,2,3,4,5,6,7,8,9,10]);
assert.deepEqual(flatten(caseNull), []);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment