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

如何将数组转为字符串并实现加一?当前代码返回undefined求助

问题分析与解决

你的代码存在三个核心问题:

  • digits.toString()会把数组转为"1,2,3",而replace(",","")仅替换第一个逗号,最终得到"12,3",并非你想要的"123"
  • 直接对字符串执行+1是字符串拼接操作,会得到"12,31"这类错误结果,而非数值加法后的124
  • 函数没有return语句,调用plusOne([1,2,3])时自然返回undefined

修正后的代码(返回数值结果)

var plusOne = function(digits) {
  // 用join('')直接将数组元素拼接为无逗号字符串
  const numStr = digits.join('');
  // 转成数值后执行加法
  const result = Number(numStr) + 1;
  console.log(result);
  // 函数返回结果,避免undefined
  return result;
};

plusOne([1,2,3]); // 输出124,返回124

若需返回字符串形式的"124"

var plusOne = function(digits) {
  const numStr = digits.join('');
  const result = (Number(numStr) + 1).toString();
  console.log(result);
  return result;
};

plusOne([1,2,3]); // 输出"124",返回"124"

额外补充(处理大数溢出场景)

如果你的需求是类似LeetCode「加一」问题(返回数字数组,比如输入[9,9]返回[1,0,0]),直接转数值会有溢出风险,此时用数组操作更稳妥:

var plusOne = function(digits) {
  for (let i = digits.length - 1; i >= 0; i--) {
    digits[i]++;
    if (digits[i] < 10) {
      return digits;
    }
    digits[i] = 0;
  }
  // 所有位都是9的情况,在数组头部加1
  digits.unshift(1);
  return digits;
};

plusOne([1,2,3]); // 返回[1,2,4]
plusOne([9,9]); // 返回[1,0,0]

内容的提问来源于stack exchange,提问作者tukitooo1998

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:50:19