Як я можу зробити наступне в JavaScript?
Об'єднати "1", "2", "3" у "123"
Перетворити "123" у 123
Додайте 123 + 100 = 223
Приховати 223 на "223"
Як я можу зробити наступне в JavaScript?
Об'єднати "1", "2", "3" у "123"
Перетворити "123" у 123
Додайте 123 + 100 = 223
Приховати 223 на "223"
Відповіді:
Ви хочете познайомитися з 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>
"1" + "2" + "3"
або
["1", "2", "3"].join("")
Метод join об'єднує елементи масиву у рядок, ставлячи вказаний роздільник між елементами. У цьому випадку "роздільник" - це порожній рядок ( ""
).
parseInt("123")
До ECMAScript 5 потрібно було передати радікс для бази 10:parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
або
(parseInt(["1", "2", "3"].join("")) + 100).toString()
parseInt
функції .
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);
Ці питання постійно виникають завдяки системі набору тексту на 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.
Ви можете зробити це так:
// 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"
0
будуть сприйматися як вісімкові (базові-8) числа.
0
а потім містять 8
або 9
будуть невдалими, призводять до повернення 0. Наприклад,, parseInt('034') = 28
і parseInt('09') = 0
.
Щоб перетворити рядок у число, відніміть 0. Щоб перетворити число в рядок, додайте "" (порожній рядок).
5 + 1 дасть вам 6
(5 + "") + 1 дасть вам "51"
("5" - 0) + 1 дасть вам 6
Нижче наведено дуже дратуючий приклад того, як 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>
Найпростіший - це коли ви хочете зробити ціле число рядком
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
Ми можемо зробити це, використовуючи одинарний оператор плюс, щоб спочатку перевести їх у числа і просто додати. Дивіться нижче:-
var a = "4";
var b = "7";
var sum = +a + +b;