¿Cómo puedo hacer lo siguiente en JavaScript?
Concatenar "1", "2", "3" en "123"
Convertir "123" en 123
Sumar 123 + 100 = 223
Convierte 223 en "223"
¿Cómo puedo hacer lo siguiente en JavaScript?
Concatenar "1", "2", "3" en "123"
Convertir "123" en 123
Sumar 123 + 100 = 223
Convierte 223 en "223"
Respuestas:
Quiere familiarizarse con parseInt()
y toString()
.
Y será útil en su kit de herramientas mirar una variable para averiguar qué tipo es 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"
o
["1", "2", "3"].join("")
El método de unión concatena los elementos de una matriz en una cadena, colocando el delimitador especificado entre los elementos. En este caso, el "delimitador" es una cadena vacía ( ""
).
parseInt("123")
Antes de ECMAScript 5 , era necesario pasar la base para la base 10:parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
o
(parseInt(["1", "2", "3"].join("")) + 100).toString()
parseInt
función .
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);
Estas preguntas surgen todo el tiempo debido al sistema de escritura de JavaScript. La gente piensa que está obteniendo un número cuando obtiene la cadena de un número.
Aquí hay algunas cosas que puede ver que aprovechan la forma en que JavaScript maneja cadenas y números. Personalmente, desearía que JavaScript hubiera usado algún símbolo que no sea + para la concatenación de cadenas.
Paso (1) Concatenar "1", "2", "3" en "123"
result = "1" + "2" + "3";
Paso (2) Convierta "123" en 123
result = +"123";
Paso (3) Suma 123 + 100 = 223
result = 123 + 100;
Paso (4) Convierta 223 en "223"
result = "" + 223;
Si sabe POR QUÉ funcionan, es menos probable que se meta en problemas con las expresiones de JavaScript.
Puedes hacerlo así:
// 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
se verán como números octales (base 8) .
0
y luego contienen 8
o 9
fallarán, dando lugar a un retorno de 0. Por ejemplo,, parseInt('034') = 28
y parseInt('09') = 0
.
Para convertir una cadena en un número, reste 0. Para convertir un número en una cadena, agregue "" (la cadena vacía).
5 + 1 te dará 6
(5 + "") + 1 te dará "51"
("5" - 0) + 1 le dará 6
A continuación se muestra un ejemplo muy irritante de cómo JavaScript puede causarle problemas:
Si solo intenta usar parseInt()
para convertir a un número y luego agrega otro número al resultado, concatenará dos cadenas.
Sin embargo, puede resolver el problema colocando la expresión de suma entre paréntesis, como se muestra en el siguiente ejemplo.
Resultado: Su suma de edad es: 98; Su suma de edad NO es: 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>
Lo más simple es cuando quieres convertir un entero en una cadena
var a,b, c;
a = 1;
b = a.toString(); // This will give you string
Ahora, de la variable b que es de tipo cadena podemos obtener el entero
c = b *1; //This will give you integer value of number :-)
Si desea marcar arriba hay un número. Si no está seguro de si b contiene un número entero, puede usar
if(isNaN(c*1)) {
//NOt a number
}
else //number
Podemos hacer esto usando un operador unario más para convertirlos a números primero y simplemente sumarlos. vea abajo:-
var a = "4";
var b = "7";
var sum = +a + +b;