JavaScript строка и преобразование чисел - PullRequest
85 голосов
/ 09 июня 2009

Как я могу сделать следующее в JavaScript?

  1. Объединить "1", "2", "3" в "123"

  2. Преобразование "123" в 123

  3. Добавить 123 + 100 = 223

  4. Преобразование 223 в "223"

Ответы [ 10 ]

117 голосов
/ 09 июня 2009

Вы хотите ознакомиться с parseInt() и toString().

И полезным в вашем наборе инструментов будет поиск переменной, чтобы выяснить, к какому типу она относится: typeof:

<code><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('
'); } var a = "1", b = "2", c = "3", результат; // Шаг (1) Объединить «1», «2», «3» в «123» // - оператор конкатенации просто "+", если // поскольку все элементы являются строками, это работает результат = a + b + c; printWithType (результат); // 123 строка // - Если бы они не были строками, вы могли бы сделать result = a.toString () + b.toString () + c.toString (); printWithType (результат); // 123 строка // Шаг (2) Преобразование «123» в 123 результат = parseInt (результат, 10); printWithType (результат); // 123 число // Шаг (3) Добавить 123 + 100 = 223 результат = результат + 100; printWithType (результат); // 223 номер // Шаг (4) Преобразование 223 в «223» result = result.toString (); // printWithType (результат); // 223 строка // Если вы объединяете число с // пустая строка, вы получаете строку результат = результат + ""; printWithType (результат); // 223 строка
50 голосов
/ 09 июня 2009

Шаг (1) Объединить «1», «2», «3» в «123»

 "1" + "2" + "3"

или

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

Метод join объединяет элементы массива в строку, помещая указанный разделитель между элементами. В этом случае «разделителем» является пустая строка ("").


Шаг (2) Преобразовать «123» в 123

 parseInt("123")

До ECMAScript 5 необходимо было передать основание для базы 10: parseInt("123", 10)


Шаг (3) Добавить 123 + 100 = 223

 123 + 100


Шаг (4) Преобразовать 223 в «223»

 (223).toString() 


Поместите все вместе

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

или

 (parseInt(["1", "2", "3"].join("")) + 100).toString()
26 голосов
/ 28 сентября 2011
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);
14 голосов
/ 09 июня 2009

Эти вопросы возникают постоянно из-за системы ввода текста в JavaScript. Люди думают, что получают число, когда получают строку числа.

Вот некоторые вещи, которые вы можете увидеть, которые используют способ, которым JavaScript работает со строками и числами. Лично мне хотелось бы, чтобы JavaScript использовал какой-то символ, отличный от + , для объединения строк.

Шаг (1) Объединить «1», «2», «3» в «123»

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

Шаг (2) Преобразовать «123» в 123

result = +"123";

Шаг (3) Добавить 123 + 100 = 223

result = 123 + 100;

Шаг (4) Преобразовать 223 в «223»

result = "" + 223;

Если вы знаете, ПОЧЕМУ это работает, у вас меньше шансов столкнуться с выражениями JavaScript.

11 голосов
/ 09 июня 2009

Вы можете сделать это так:

// 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"
8 голосов
/ 04 сентября 2009

Чтобы преобразовать строку в число, вычтите 0. Чтобы преобразовать число в строку, добавьте "" (пустая строка).

5 + 1 даст вам 6

(5 + "") + 1 даст вам "51"

("5" - 0) + 1 даст вам 6

5 голосов
/ 23 октября 2009

parseInt искажен как scanf:

parseInt("12 monkeys", 10) is a number with value '12'
+"12 monkeys"              is a number with value 'NaN'
Number("12 monkeys")       is a number with value 'NaN'
1 голос
/ 03 октября 2016

Ниже приведен очень раздражающий пример того, как JavaScript может доставить вам неприятности:

Если вы просто попытаетесь использовать parseInt() для преобразования в число, а затем добавите еще один номер к результату, он объединит две строки.

Однако, вы можете решить эту проблему, поместив выражение суммы в скобки , как показано в примере ниже.

Результат: их возрастная сумма: 98; Их возраст не: 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>
0 голосов
/ 11 марта 2019

Мы можем сделать это, используя унарный оператор плюс , чтобы сначала преобразовать их в числа и просто добавить. см. ниже: -

var a = "4";
var b = "7";
var sum = +a + +b; 
0 голосов
/ 21 апреля 2014

Самый простой когда вы хотите сделать целое число строкой, выполните

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

Теперь из переменной b, которая имеет тип string, мы можем получить целое число

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

Если вы хотите проверить выше, это число. Если вы не уверены, содержит ли b целое число тогда вы можете использовать

if(isNaN(c*1)) {
  //NOt a number
}
else //number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...