¿Cómo concatenar dos números en javascript?

107

Me gustaría algo como 5 + 6volver en "56"lugar de 11.

Heidi
fuente
3
Bueno, ciertamente tienes muchas respuestas. Estoy votando todas las correctas.
David
varias de las respuestas tienen la cadena vacía en el medio. Parece extraño y me preguntaba por qué sería preferible a alguien. Tener las comillas al principio indica rápidamente las intenciones y parece tener más sentido, ya que no requiere pensar más en el caso de tener que concatenar más de dos números. Supongo que los votantes están de acuerdo, pero solo se preguntan si hay alguna razón histórica o de otro tipo detrás de la lógica intermedia.
MrBoJangles

Respuestas:

152

Úselo "" + 5 + 6para forzarlo a cuerdas. Esto también funciona con variables numéricas:

var a = 5;
var b = 6;
console.log("" + a + b);


fuente
Bien, suponiendo que los valores 5 y 6 están en dos variables: var1 = 5; var2 = 6; ¿seguirá funcionando
Heidi
3
Esta respuesta debe editarse, definitivamente este es un mejor enfoque. const numbersAsString = `${5}${6}`;
Pavol Travnik
27
var value = "" + 5 + 6;
alert(value);
jessegavin
fuente
26

Ahora puede hacer uso de literales de plantilla ES6 .

const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56

O, si tiene variables:

const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;

console.log(numbersAsString); // Outputs 56

Personalmente, encuentro la nueva sintaxis mucho más clara, aunque un poco más detallada.

texta83
fuente
23

Solo usa:

5 + "" + 6
Brian Schroth
fuente
16

respuesta simple:

5 + '' + 6;
Bryan McLemore
fuente
15
var output = 5 + '' + 6;
ACBurk
fuente
14

Utilizar

var value = "" + 5 + 6;

para forzarlo a cuerdas.

Nadir SOUALEM
fuente
11

Sé que esta es una publicación antigua y ha sido respondida muchas veces. Yo también me preguntaba si JavaScript tenía una función que hiciera esto. Estaba haciendo algo de programación matemática y necesitaba concatenar dos números.

Entonces, ¿qué pasaría si tuviera que combinar dos números 17 y 29? Claro que puedo convertirlos en cadenas y concatenarlos y luego convertir la nueva cadena en un número. Eso parece funcionar bastante bien y puedo continuar con mi código, pero echemos un vistazo aquí y tratemos de averiguar qué está sucediendo realmente aquí.

¿Qué estamos haciendo con estos dos números, cómo tomamos 17 y 29 y lo convertimos en mil setecientos veintinueve? Bueno, podemos multiplicar 17 por 100 y luego sumar 29. ¿Y qué tal 172 y 293 para obtener ciento setenta y dos mil doscientos noventa y tres? Multiplica 172 por 1000 y suma 293. Pero, ¿qué pasa con solo 2 y 9? Multiplica 2 por 10 y luego suma 9 para obtener 29.

Así que, con suerte, a estas alturas ya debería ser evidente un patrón. Podemos idear una fórmula matemática para hacer este cálculo por nosotros en lugar de simplemente usar cadenas. Para concatenar dos números cualesquiera, ayb, necesitamos tomar el producto de ay 10 a la potencia de la longitud b y luego sumar b.

Entonces, ¿cómo obtenemos la longitud del número b? Bueno, podríamos convertir b en una cadena y obtener la propiedad length.

    a * Math.pow(10, new String(b).length) + b;

Pero tiene que haber una mejor manera de hacer esto sin ataduras, ¿verdad? Sí hay.

ingrese la descripción de la imagen aquí

Para dos números cualesquiera, ayb, con cualquier base B. Vamos a multiplicar a por la base B a la potencia de la longitud b (usando la base logarítmica de b y luego colocando el piso para obtener el número entero más cercano y luego agregando 1) luego agregando b.

Así que ahora nuestro código se ve así:

    a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;

Pero espera, ¿y si quisiera hacer esto en base 2 o en base 8? ¿Cómo puedo hacer eso? No podemos usar nuestra fórmula que acabamos de crear con cualquier otra base que no sea la base 10. El objeto JavaScript Math ya tiene funciones integradas para base 10 y 2 (solo Math.log), pero ¿cómo obtenemos funciones de registro para cualquier otra base? Dividimos el logaritmo de b por el logaritmo de base.Math.log(b) / Math.log(base).

Así que ahora tenemos nuestro código matemático completamente funcional para concatenar dos números:

    function concatenate(a, b, base) {
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }
    var a = 17, var b = 29;
    var concatenatedNumber = concatenate(a, b, 10);
    // concatenatedNumber = 1729

Si sabía que solo iba a hacer matemáticas de base 10, podría agregar una verificación para que la base no esté definida y luego establecer base = 10:

    function concatenate(a, b, base) {
        if(typeof base == 'undefined') {
            base = 10;
        }
        return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    }

    var a = 17, b = 29;
    var newNumber = concatenate(a, b); // notice I did not use the base argument
    // newNumber = 1729

Para facilitarme las cosas, utilicé el prototipo para agregar la función al objeto Número:

    Number.prototype.concatenate = function(b, base) {
        if(typeof base == 'undefined') {
                base = 10;
        }
        return this * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
    };
    var a = 17;
    var newNumber = a.concatenate(29);
    // newNumber = 1729
Steven Kapaun
fuente
8

También puede usar la toStringfunción para convertirlo en cadena y concatenar.

var a = 5;
var b = 6;
var value = a.toString() + b.toString();
Pradeep Kumar Prabaharan
fuente
4

Otra posibilidad podría ser esta:

var concat = String(5) + String(6);
Rui Lima
fuente
2
enter code here
var a = 9821099923;
var b = 91;
alert ("" + b + a); 
// after concating , result is 919821099923 but its is now converted 
into string  

console.log(Number.isInteger("" + b + a))  // false

 you have to do something like below:- 

var c= parseInt("" + b + a)
console.log(c); // 919821099923
console.log(Number.isInteger(c)) // true
Shashwat Gupta
fuente
1

Esta es la forma fácil de hacer esto

var value=5+""+6;
Gihan Chathuranga
fuente
1

Convertí de nuevo a un número como este ...

const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);

salida 1245

- editar -

lo siento,

para mi uso, esto todavía no me funcionó después de la prueba. Tuve que volver a agregar el cero faltante, ya que se estaba eliminando en números menores a 10, mi uso es para dejar que el código se ejecute en ciertos momentos.Puede que no sea correcto, pero parece funcionar (hasta ahora).

h = new Date().getHours();
m = new Date().getMinutes();
isOpen: boolean;

timeNow = (this.m < 10) ? '' + this.h + 0 + this.m : '' + this.h + this.m;

openTime = parseInt(this.timeNow);


closed() {

(this.openTime >= 1450 && this.openTime <= 1830) ? this.isOpen = true : 
this.isOpen = false;
(this.openTime >= 715 && this.openTime <= 915) ? this.isOpen = true : 
this.isOpen = false;

}

La votación en contra fue agradable gracias :)

Soy nuevo en esto y vine aquí para aprender de ustedes una explicación de por qué hubiera sido bueno.

De todos modos actualicé mi código para mostrar cómo solucioné mi problema, ya que esta publicación me ayudó a resolverlo.

Christopher Lowe
fuente
0

Preferiría la concatforma:

const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);

También puede usar una matriz que puede ayudar en algunos casos de uso:

const value3 = [5, 6, numVar1].join('');
dun32
fuente
0

Puedes devolver un número usando este truco:
no recomendado

[a] + b - 0

Ejemplo:

let output = [5] + 6 - 0;
console.log(output); // 56
console.log(typeof output); // number
Haikel
fuente
0

Para agregar a todas las respuestas anteriores, quiero compartir la lógica de fondo:

Plus es un operador de suma que también se utiliza para la concatenación de cadenas. Cuando queremos concatenar números. Debe entenderse que queremos concatenar las cadenas, ya que la concatenación de números no me convierte en casos de uso válidos.

Podemos lograrlo de múltiples formas,

Mediante conversión de tipo

let a = 5;
a.toString()+5 // Output 55 type "string"

Esto también funcionará y hará la conversión de tipo en segundo plano,

5 +""+ 5 // Output 55 type "string"

Si está decidido a concatenar dos cadenas y el tipo de salida debe ser int, parseInt () funciona aquí

parseInt(5 +""+ 5)  //Output 55 Type "number"
Amitesh Bharti
fuente