第一种方案:array.flat(Infinity) function _flatten(arr) { // 第一种方式 return arr.flat(Infinity) } console.log(_flatten([1, [2, 3], 4])) 第二种方案:递归 let res = [] function _flatten(arr) { for(let i=0; i<arr.length; i++){ if(Array.isArray(arr[i])){ _flatten(arr[i]) }else{ res.push(arr[i]) } } } _flatten([1, [2, 3, [4, 5], 6], 7, 8]) console.log(res) 第三种:递归+reduce function _flatten(arr){ return arr.reduce((resArr, item) => { if(Array.isArray(item)){ return resArr.concat(_flatten(item)) }else{ return resArr.concat(item) } }, []) } console.log(_flatten([1, [2, 3, [4, 5], 6], 7]))