JavaScript字符串和数字转换

use*_*312 86 javascript string numbers

如何在JavaScript中执行以下操作?

  1. 将"1","2","3"连接成"123"

  2. 将"123"转换为123

  3. 添加123 + 100 = 223

  4. 隐藏223成"223"

art*_*ung 118

你想熟悉parseInt()toString().

在您的工具包中有用的是查看变量以找出它是什么类型 - typeof:

<script type="text/javascript">
    /**
     * print out the value and the type of the variable passed in
     */

    function printWithType(val) {
        document.write('<pre>');
        document.write(val);
        document.write(' ');
        document.writeln(typeof val);
        document.write('</pre>');
    }

    var a = "1", b = "2", c = "3", result;

    // Step (1) Concatenate "1", "2", "3" into "123"
    // - concatenation operator is just "+", as long
    //   as all the items are strings, this works
    result = a + b + c;
    printWithType(result); //123 string

    // - If they were not strings you could do
    result = a.toString() + b.toString() + c.toString();
    printWithType(result); // 123 string

    // Step (2) Convert "123" into 123
    result = parseInt(result,10);
    printWithType(result); // 123 number

    // Step (3) Add 123 + 100 = 223
    result = result + 100;
    printWithType(result); // 223 number

    // Step (4) Convert 223 into "223"
    result = result.toString(); //
    printWithType(result); // 223 string

    // If you concatenate a number with a 
    // blank string, you get a string    
    result = result + "";
    printWithType(result); //223 string
</script>
Run Code Online (Sandbox Code Playgroud)


Pat*_*ney 50

步骤(1)将"1","2","3"连接成"123"

 "1" + "2" + "3"
Run Code Online (Sandbox Code Playgroud)

要么

 ["1", "2", "3"].join("")
Run Code Online (Sandbox Code Playgroud)

加入方法串接数组的项转换成字符串,将项目间的指定的分隔符.在这种情况下,"分隔符"是一个空字符串("").


步骤(2)将"123"转换为123

 parseInt("123")
Run Code Online (Sandbox Code Playgroud)

ECMAScript 5之前,有必要传递基数为10的基数:parseInt("123", 10)


步骤(3)添加123 + 100 = 223

 123 + 100
Run Code Online (Sandbox Code Playgroud)


步骤(4)将223隐藏为"223"

 (223).toString() 
Run Code Online (Sandbox Code Playgroud)


把它放在一起Togther

 (parseInt("1" + "2" + "3") + 100).toString()
Run Code Online (Sandbox Code Playgroud)

要么

 (parseInt(["1", "2", "3"].join("")) + 100).toString()
Run Code Online (Sandbox Code Playgroud)

  • 很好,明确的例子.另外,要获得良好形式的荣誉 - 您应该始终[指定`parseInt`函数的基数](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt). (4认同)

小智 26

r = ("1"+"2"+"3")           // step1 | build string ==> "123"
r = +r                      // step2 | to number    ==> 123
r = r+100                   // step3 | +100         ==> 223
r = ""+r                    // step4 | to string    ==> "223"

//in one line
r = ""+(+("1"+"2"+"3")+100);
Run Code Online (Sandbox Code Playgroud)


Nos*_*dna 14

由于JavaScript的打字系统,这些问题一直存在.人们认为他们在得到一个数字的字符串时会得到一个数字.

以下是您可能会看到的一些利用JavaScript处理字符串和数字的方式.就个人而言,我希望JavaScript使用除+之外的一些符号来进行字符串连接.

步骤(1)将"1","2","3"连接成"123"

result = "1" + "2" + "3";
Run Code Online (Sandbox Code Playgroud)

步骤(2)将"123"转换为123

result = +"123";
Run Code Online (Sandbox Code Playgroud)

步骤(3)添加123 + 100 = 223

result = 123 + 100;
Run Code Online (Sandbox Code Playgroud)

步骤(4)将223转换为"223"

result = "" + 223;
Run Code Online (Sandbox Code Playgroud)

如果你知道为什么这些工作,你就不太可能遇到JavaScript表达式的麻烦.

  • 您应该通过压缩工具实现这一点,但在这种形式下,它的优化是非常实际的维护成本. (6认同)
  • 尽管如此,了解这些内容有助于首先解决问题,即缺乏JavaScript如何处理字符串和数字的知识.这是一个求知欲的问题.当我向字符串添加数字时会发生什么?一元加上如何工作?如果您不知道答案,那么您并不真正了解JavaScript,而且会出现这些问题. (6认同)
  • 我实际上认为这是非常糟糕的做法,因为它是非常不透明的,因为它正在发生.知道某些操作会影响一个隐式演员是一个技巧,一个很好的知道,但它根本不可读.沟通就是一切. (3认同)

And*_*are 11

你可以这样做:

// step 1 
var one = "1" + "2" + "3"; // string value "123"

// step 2
var two = parseInt(one); // integer value 123

// step 3
var three = 123 + 100; // integer value 223

// step 4
var four = three.toString(); // string value "223"
Run Code Online (Sandbox Code Playgroud)

  • 最佳做法是将radix参数添加到parseInt()函数中.所以,parseInt(一,十)确保无论你抛出什么都不会被误解. (16认同)
  • 同意.否则,以"0"开头的值将被视为[八进制(base-8)](http://www.electronics-tutorials.ws/binary/bin_4.html)数字. (3认同)

Rob*_*t L 8

要将字符串转换为数字,请减去0.要将数字转换为字符串,请添加""(空字符串).

5 + 1会给你6

(5 +"")+ 1会给你"51"

("5" - 0)+ 1会给你6


xan*_*der 6

parseInt像scanf一样错误:

__PRE__