You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zig-Zag字符串拼接输出异常:多行输出与undefined问题求助

Zig-Zag字符串拼接问题:修复多行输出与undefined打印

问题分析

你的代码逻辑正确,但存在两个明显问题:

  1. 多行输出:最后通过循环逐行执行console.log(arr[i]),导致每行内容单独打印,而非拼接成单行输出。
  2. 打印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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:12:48