在javascript中反转一个数字(澄清)

时间:2015-04-08 16:09:17

标签: javascript

我有一个简单的问题要问,我有点尴尬地问,但我意识到除非我问,否则我不会学习。

当查看反转字符串时,我发现反转字符串需要您拆分字符串,反转它,然后重新连接它。像这样。

var stringReverse = function (n){
    return n.split("").reverse().join("");
}
console.log(stringReverse("hello"));

然而,我试图扭转一个数字,除了一部分之外,大部分原则非常相似。以下代码是:

var reverse_a_number = function (n){  
    n = n + "";  
    return n.split("").reverse().join("");  
}  
console.log(reverse_a_number(32243));  

我的问题是为什么我需要引入“n = n +”“;”代码?我假设无论是字符串还是整数,相同的原理都是相似的。

非常感谢,我很抱歉这个问题很简单。

6 个答案:

答案 0 :(得分:1)

  

为什么我需要引入“n = n +”“;”代码?

添加+ ""会转换为String,这样您就可以使用String个函数(.split)。

整数仅具有Number的功能。如果您想将Number视为String,则需要将其转换为+ "")或将其转换为.toString()

.reverse()函数来自使用String函数.split()时创建的Array对象。

使用.join(),您将从String(字符)返回Array

如果您想在还原后返回Number,则可以选择these functions之一。

答案 1 :(得分:0)

简而言之,the docs要求它是一个字符串。您可以通过完成您在reverse_a_number中执行的操作来组合您的两种方法(它适用于两者)。另外,不要尴尬地提问,这是你学习的方法:)。

答案 2 :(得分:0)

数字没有split方法。你必须将它转换为一个字符串,它有split

您可以使用typeof找出变量的类型。以下代码段演示了数字和字符串的类型,并显示了每个类型的split属性的值。请注意,split未定义数字。



var n = 42;
document.write(typeof n, '<br />', n.split, '<br />', '<br />');

var s = ''+n;
document.write(typeof s, '<br />', s.split);
&#13;
&#13;
&#13;

如果要通过将整数视为整数来反转整数,而不使用字符串操作,则可以执行以下操作。

&#13;
&#13;
function reverseInteger(n) {
  var result = 0;
  while (n != 0) {
    var digit = n%10;
    result = 10*result + digit;
    n = (n-digit)/10;
  }
  return result;
}

var n = 3141590123456;
document.write(n, '<br />');
document.write(reverseInteger(n));
&#13;
&#13;
&#13;

请注意n的最后一位是n%10。如果我们减去最后一位数并将n除以10,效果就是将n向右移一位数。我们继续这样做,并通过在每次迭代时将其乘以10并添加我们刚从result中删除的数字来反向构建n

答案 3 :(得分:0)

数字没有直接反向和分割方法,您应该将数字转换为能够反转它的字符串。

要转换它,你可以在它之后添加一个空字符串,就像你一样。

只是它。

答案 4 :(得分:0)

Javascript在运行时设置变量的类型

如果她(是,它是一个女孩)看到你只有密码,她会认为它是一个整数。

添加+ "";会将其转换为字符串,这是一个字符数组。

字符串的存储方式有点像:['h', 'e', 'l', 'l', 'o']
整数存储为{0011001010101 ...}

答案 5 :(得分:0)

解释

您传入的是数字,而不是字符串。当您将数字与字符串""组合在一起时,它会假定您要创建一个字符串。所以你真的把它转换成字符串。到一个数组,然后回到一个字符串。如果您尝试拆分数字,编译器将抛出错误。更准确地说

  

TypeError:undefined不是一个函数(评估&#39; n.split(&#39;&#39;)&#39;)

所以你真正在做的是将数字变成一个字符串。您可以使用不同的方法,看看here

n += ''; (字符串) - &gt;

.split() (数组) - &gt; .split() (数组) - &gt; .join() (字符串)

  

您的函数实际上是在生成并返回一个字符串

替代功能

我要批评;),您可以使用以下内容缩短并改进此功能。

var reverse_a_number = function (n){  
    return +(n += "").split("").reverse().join("");  
}  

这是做什么的?

n = n + ''有一个特殊的运算符+=。我们可以通过使用这个内括号将其缩短到在线状态。 +会将其转换为整数