const __flattenReducer = (result,value,valueIndex,arr)=>{ if(value instanceof Array){ return value.reduce(__flattenReducer,result); }else{ result.push(value); return result; } }; const flatten = function(arr){ if(arr instanceof Array){ return Array.prototype.reduce.apply(arr,[__flattenReducer,[]]); }else{ throw new TypeError('Expected an array'); } } module.exports = flatten;