Zig-Zag字符串拼接输出异常:多行输出与undefined问题求助
Zig-Zag字符串拼接问题:修复多行输出与undefined打印
问题分析
你的代码逻辑正确,但存在两个明显问题:
- 多行输出:最后通过循环逐行执行
console.log(arr[i]),导致每行内容单独打印,而非拼接成单行输出。 - 打印undefined:函数
StringChallenge无返回值(仅在n==1时直接return但无返回内容,其他分支也未设置返回语句),当外部调用console.log(StringChallenge(strArr))时,会打印函数默认返回的undefined。
修复后的代码
function StringChallenge(strArr) { let str = strArr[0]; let n = strArr[1]; if (n == 1) { return str; // 返回字符串而非直接打印 } let str1 = str.split(""); let len = str.length; let arr = new Array(n); for (let i = 0; i < n; i++) { arr[i] = ""; } let row = 0; let down = true; for (let i = 0; i < len; i++) { arr[row] += str1[i]; if (row == n - 1) { down = false; } else if (row == 0){ down = true; } row += down ? 1 : -1; // 简化行增减逻辑 } return arr.join(''); // 拼接所有行成单个字符串返回 } let strArr = ["geeksforgeeks", 3]; // 测试用例1:预期输出"gsgsekfrekeoe" // let strArr = ["cat", 5]; // 测试用例2:预期输出"cat" console.log(StringChallenge(strArr));
修复说明
- 解决多行输出:用
arr.join('')将所有行的字符串拼接成一个整体,返回后统一打印。 - 解决undefined打印:让函数始终返回处理后的结果字符串(包括
n==1的场景),外部通过console.log打印函数返回值,避免打印函数默认的undefined。 - 额外优化:将行增减的判断逻辑简化为
row += down ? 1 : -1,让代码更简洁。
内容的提问来源于stack exchange,提问作者Eccentric_code
相关产品推荐
相关产品推荐

