在反向字符串javascript中保持零值

Faz*_*iki 2 javascript

我想在 javascript 中反转一个字符串并保持零值。


function reverseNumb(a) {
  let reverse = Array.from(String(a),Number).reverse();
    return Number(reverse.join(''));
}

reverseNumb(01234567);

Run Code Online (Sandbox Code Playgroud)

它不断删除 0,如果添加 0,它会给出完全不同的数字

希望它保持数字为零并且不将值更改为不同的东西 wen 添加数字 0

任何帮助,将不胜感激

Ste*_*ing 6

当您查看Number数据类型时,如果它有前导零,则零被视为无意义。如果您在谈论基数为 10 的数字系统,而不是二进制或八进制或十六进制或其他任何内容,则0100,甚至000000100两者都只是等于100. 因此,该数字01234567被正确读取并存储为 Number as 1234567


编辑: 在这里要清楚,在实际代码中,如果您没有明确表示您在基数 10 中,则前导 0 将导致数字被读取并存储为八进制值(如果前导 0 后跟 则为十六进制值)a x) 在某些操作中。因此,该语句 let num = 0100 导致在 松散模式下num 保存为值, 64 并在严格模式下抛出 SyntaxError。然而 parseInt("0100", 10)Number("0100")"0100"|0 +"0100" 都相等 100


如果您想保留前导零,最好将数据表示为String,您只需将其括在引号中即可:reverseNums("01234567")。如果您需要让函数返回也包含前导零的数字,您将需要返回一个字符串,您只需在 return 语句中不将其转换为数字即可:return rev.join('')

但是,由于您现在使用字符串作为输入,您可以通过使用String 对象的split 方法首先将输入转换为数组,然后链接其余方法,从而编写更简单的字符串反转函数,像这样:

function reverseString(str) {
  return str.split('').reverse().join('');
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用现代的、不那么冗长的 ES6+ 语法,通过使用如下箭头函数表达式来编写字符串反转函数:

const reverseString = str => str.split('').reverse().join('');
Run Code Online (Sandbox Code Playgroud)