如何修复JavaScript递归函数实现嵌套数组扁平化并换行输出元素
问题修复方案
原代码错误原因
- 函数名不一致:定义的函数名为
date,但递归调用时写的是aa,会直接触发未定义函数报错 - 多余换行符拼接:每次处理元素时前后都多加了
\n,内层数组遍历也额外加了开头的\n,导致最终输出出现大量连续空行、首尾空行 - 数组判断不严谨:用
typeof input == 'object'判断数组不准确,遇到普通对象{}时会逻辑出错,应该用Array.isArray()专门判断数组类型
修复后代码
function flattenToString(arr) { const result = [] for (const item of arr) { if (Array.isArray(item)) { // 内层数组递归打平后合并结果 result.push(...flattenToString(item).split('\n')) } else { // 非数组元素直接存入结果集 result.push(item) } } // 最后统一用换行符拼接,完全避免多余换行 return result.join('\n') }
测试验证
输入let a = [1,2,3,[4,5,6],'abc',['e','f'] ],调用flattenToString(a)即可得到期望输出"1\n2\n3\n4\n5\n6\nabc\ne\nf"。
内容的提问来源于stack exchange,提问作者user16577849
相关产品推荐
相关产品推荐

