const arr = [1, [2, 3, [4, 5]], 1, 2, [6, 7]] //deep 循环次数 Array.prototype.flat = function (deep = 1) { let res = [] deep-- for (const p of this) { if (Array.isArray(p) && deep >= 0) { res = res.concat(p.flat(deep)) } else { res.push(p) } } return res } function concatFlat(arr, depth = 1) { let result = []; for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i]) && depth > 0) { // 如果当前元素是数组且深度允许继续扁平化,则递归调用 concatFlat result = result.concat(concatFlat(arr[i], depth - 1)); } else { // 否则直接添加到结果数组中 result.push(arr[i]); } } return result; } // 使用示例 const arr = [1, [2, 3, [4, 5]], 1, 2, [6, 7]]; const flatArr = concatFlat(arr, Infinity); // 使用 Infinity 确保所有层级都被扁平化 console.log(flatArr); // 输出: [1, 2, 3, 4, 5, 1, 2, 6, 7]