function flatten(arr, dep, result) { result || (result = []) if(arr.length === 0) return [] for(let val of arr) { if(dep > 0 && Array.isArray(val)) { if(dep >= 1) { flatten(val, dep - 1, result) //重点:这里是dep - 1 } else { result.push(val) } } else { result.push(val) } } return result } console.log(flatten([1,[2,[3,[4,[5,6,[8,[9]],7]]]]], 3))