我想在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('');