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


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

reverseNumb(01234567);


它会继续删除0,如果加上0,则会给出一个完全不同的数字

希望它保持数字零并且不将值更改为与数字相加的其他值0

任何帮助,将不胜感激

最佳答案

当您查看Number数据类型时,如果它具有前导零,则将零视为无意义。如果您正在谈论的是基数为10的数字系统,而不是二进制,八进制或十六进制等,那么0100甚至000000100都等于100。因此,正确读取了数字01234567,并将其作为数字存储为1234567

编辑:在这里要清楚一点,在实际代码中,如果您不明确您以10为底,则前置0将导致数字被读取并存储为八进制值(如果前导为十六进制值)在某些操作中,0后跟一个x)。因此,let num = 0100语句导致num在松散模式下与64的值一起保存,并在严格模式下引发SyntaxError。但是,parseInt("0100", 10)Number("0100")"0100"|0+"0100"都等于100

如果要保持前导零,则最好将数据表示为String,只需将其包装在引号中即可:reverseNums("01234567")。如果需要让函数返回数字也包含前导零,则需要返回一个字符串,方法是不将其转换为返回语句中的数字:return rev.join('')
但是,由于您现在使用字符串作为输入,因此您可以编写一个更简单的字符串反转函数,方法是使用String对象中的split method首先将您的输入转换为Array,然后再将其余方法链接起来,例如这个:

function reverseString(str) {
  return str.split('').reverse().join('');
}

您还可以通过使用类似arrow function expression的现代,不太冗长的ES6 +语法编写字符串反转函数:

const reverseString = str => str.split('').reverse().join('');

09-11 19:06