// array flatten function function flatten (arr) { let result = [].slice.call(arguments)[1] || [] for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) { flatten(arr[i], result) } else { result.push(arr[i]) } } return result } // invoke: flatten([1, 2, [3, 4, [{num: 5}, {num: 6}]]]) // output: [1, 2, 3, 4, {num: 5}, {num: 6}]