我有一个简单的问题要问,我有点尴尬地问,但我意识到除非我问,否则我不会学习。
当查看反转字符串时,我发现反转字符串需要您拆分字符串,反转它,然后重新连接它。像这样。
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 +”“;”代码?我假设无论是字符串还是整数,相同的原理都是相似的。
非常感谢,我很抱歉这个问题很简单。
答案 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;
如果要通过将整数视为整数来反转整数,而不使用字符串操作,则可以执行以下操作。
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;
请注意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 + ''
有一个特殊的运算符+=
。我们可以通过使用这个内括号将其缩短到在线状态。 +
会将其转换为整数