// 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}]