function flatten(arr){ var flatArr = []; var recursive = function(arr2) { if(arr2.length == 0) { return; } else if (Array.isArray(arr2[0])) { recursive(arr2[0]); } else { flatArr.push(arr2[0]); } recursive(arr2.slice(1)); } recursive(arr); return flatArr; } var test1 = JSON.stringify(flatten([])) === JSON.stringify([]); var test2 = JSON.stringify(flatten([1])) === JSON.stringify([1]); var test3 = JSON.stringify(flatten([[1,2]])) === JSON.stringify([1,2]); var test4 = JSON.stringify(flatten([[1,2],3])) === JSON.stringify([1,2,3]); var test5 = JSON.stringify(flatten([[1,2,[3]],4])) === JSON.stringify([1,2,3,4]);