首页 > 解决方案 > 随机“未定义”被插入到字符串中

问题描述

我有一个函数,它接受一个整数并反向返回它reverse(-425) -> -524

let reverse = (x) => {
  let y = x.toString()
  let char = y.length - 1
  let z = ''
  if (y[0] === '-') {
    z = '-'
    y = y.slice(1, y.length)
  }

  while (char >= 0) {
    z += y[char]
    char -= 1
  }

  return z
}

console.log(reverse(-324))

当我跑步时,console.log(reverse(-324))我希望它会返回-423,但我得到了-undefined423.

undefined来自哪里?

标签: javascript

解决方案


在检查数字是否为负之前,char您计算出(取决于字符串的长度)的第一个值。

-如果数字为负数,则在从前面删除字符串时将字符串的长度减少 1 。

在这一点char上太高了。

改变你做这些事情的顺序:

let reverse = (x) => {
  let y = x.toString()
  let z = ''
  
  if (y[0] === '-') {
    z = '-'
    y = y.slice(1, y.length)
  }

  let char = y.length - 1

  while (char >= 0) {
    z += y[char]
    char -= 1
  }

  return z
}

console.log(reverse(-324))
console.log(reverse(2468))


推荐阅读