wake-up-neo.com

Konvertierung von JavaScript-Strings und -Zahlen

Wie kann ich Folgendes in JavaScript machen?

  1. Verketten Sie "1", "2", "3" in "123"

  2. Wandeln Sie "123" in 123 um

  3. Addiere 123 + 100 = 223

  4. 223 in "223" verstecken

84
user366312

Sie möchten sich mit parseInt() und toString() vertraut machen.

In Ihrem Toolkit wird es nützlich sein, eine Variable zu suchen, um herauszufinden, um welchen Typ es sich handelt - 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>
115
artlung

Schritt (1) Verketten von "1", "2", "3" in "123"

 "1" + "2" + "3"

oder

 ["1", "2", "3"].join("")

Die join -Methode verkettet die Elemente eines Arrays in einer Zeichenfolge, wobei das angegebene Trennzeichen zwischen den Elementen steht. In diesem Fall ist das "Trennzeichen" eine leere Zeichenfolge (""). 


Schritt (2) Wandeln Sie "123" in 123 um

 parseInt("123")

Vor ECMAScript 5 war es notwendig, die Basis für Basis 10 zu übergeben: parseInt("123", 10)


Schritt (3) Addiere 123 + 100 = 223

 123 + 100


Schritt (4) 223 in "223" umwandeln

 (223).toString() 


Setze alles zusammen

 (parseInt("1" + "2" + "3") + 100).toString()

oder

 (parseInt(["1", "2", "3"].join("")) + 100).toString()
50
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);
25
cesarl

Diese Fragen werden ständig durch das Typisierungssystem von JavaScript gestellt. Die Leute denken, sie bekommen eine Nummer, wenn sie die Zeichenkette einer Nummer bekommen.

Hier einige Dinge, die Sie möglicherweise sehen werden, um die Art und Weise zu nutzen, wie JavaScript mit Zeichenfolgen und Zahlen umgeht. Ich persönlich wünsche mir, dass JavaScript ein anderes Symbol als + für die Verkettung von Zeichenfolgen verwendet hätte.

Schritt (1) Verketten von "1", "2", "3" in "123"

result = "1" + "2" + "3";

Schritt (2) Wandeln Sie "123" in 123 um

result = +"123";

Schritt (3) Addiere 123 + 100 = 223

result = 123 + 100;

Schritt (4) 223 in "223" umrechnen

result = "" + 223;

Wenn Sie wissen, WARUM diese Probleme auftreten, ist es weniger wahrscheinlich, dass Sie Probleme mit JavaScript-Ausdrücken haben.

14
Nosredna

Sie können es so machen:

// 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"
11
Andrew Hare

Um eine Zeichenfolge in eine Zahl umzuwandeln, subtrahieren Sie 0 . Um eine Zahl in eine Zeichenfolge umzuwandeln, fügen Sie "" (die leere Zeichenfolge) hinzu.

5 + 1 gibt Ihnen 6

(5 + "") + 1 ergibt "51"

("5" - 0) + 1 ergibt 6

8
Robert L

parseInt wird wie scanf falsch dargestellt:

 parseInt ("12 Affen", 10) ist eine Zahl mit dem Wert "12" + "12 Affen" ist eine Zahl mit dem Wert "NaN" Number ("12 Affen") ist eine Zahl mit Wert 'NaN' 

5
xander

Im Folgenden finden Sie ein sehr irritierendes Beispiel dafür, wie Sie mit JavaScript Probleme bekommen können:

Wenn Sie nur versuchen, parseInt() zu verwenden, um eine Zahl zu konvertieren und dann eine weitere Zahl zum Ergebnis hinzuzufügen, werden zwei Zeichenfolgen verkettet. 

Sie können das Problem jedoch lösen, indem Sie den Summenausdruck in Klammern setzen wie im folgenden Beispiel gezeigt.

Ergebnis: Ihre Alterssumme beträgt: 98; Ihre Alterssumme beträgt NICHT: 5048

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

document.getElementById("demo").innerHTML = "Their age sum is: "+
 (parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
 parseInt(myFather.age)+myMother.age; 
</script>

</body>
</html>

1
jpsousa

Wir können dies tun, indem wir unary plus operator verwenden, um sie zuerst in Zahlen umzuwandeln und einfach hinzuzufügen. siehe unten:-

var a = "4";
var b = "7";
var sum = +a + +b; 
0
hemant

Am einfachsten ist .__, wenn Sie eine Ganzzahl als Zeichenfolge definieren möchten

var a,b, c;
a = 1;
b = a.toString(); // This will give you string

Nun können wir aus der Variablen b, die vom Typ string ist, die ganze Zahl erhalten

c = b *1; //This will give you integer value of number :-)

Wenn Sie oben nachsehen möchten, ist eine Nummer. Wenn Sie nicht sicher sind, ob b die Ganzzahl __ enthält, können Sie verwenden 

if(isNaN(c*1)) {
  //NOt a number
}
else //number
0
Kshitiz