Como concatenar dois números em javascript?

107

Eu gostaria de algo como 5 + 6voltar em "56"vez de 11.

Heidi
fonte
3
Bem, você certamente obteve muitas respostas. Estou votando em todos os corretos.
David
várias das respostas têm a string vazia no meio. Parece estranho e eu queria saber por que isso seria preferível a qualquer pessoa. Ter as aspas no início indica rapidamente as intenções e parece fazer mais sentido, pois não requer pensamento adicional no caso de ter que concatenar mais de dois números. Suponho que os eleitores concordem, mas apenas se perguntando se há alguma razão histórica ou outra por trás do raciocínio intermediário.
MrBoJangles

Respostas:

152

Use "" + 5 + 6para forçar as cordas. Isso também funciona com variáveis ​​numéricas:

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


fonte
Ok então, supondo que os valores 5 e 6 estejam em duas variáveis: var1 = 5; var2 = 6; ainda funcionará
Heidi
3
Esta resposta deve ser editada, definitivamente esta é uma abordagem melhor. const numbersAsString = `${5}${6}`;
Pavol Travnik
27
var value = "" + 5 + 6;
alert(value);
Jessegavin
fonte
26

Agora você pode fazer uso de literais de modelo ES6 .

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

Ou, se você tiver variáveis:

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

console.log(numbersAsString); // Outputs 56

Pessoalmente, acho a nova sintaxe muito mais clara, embora um pouco mais detalhada.

texta83
fonte
23

Apenas use:

5 + "" + 6
Brian Schroth
fonte
16

resposta simples:

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

Usar

var value = "" + 5 + 6;

para forçá-lo a cordas.

Nadir SOUALEM
fonte
11

Eu sei que este é um post antigo e já foi respondido várias vezes. Eu também estava me perguntando se o JavaScript tinha uma função que faria isso. Eu estava fazendo uma programação matemática e precisava concatenar dois números.

Então, e se eu precisasse combinar dois números 17 e 29. Claro que posso transformá-los em strings e concatená-los e depois transformar a nova string em um número. Isso parece funcionar muito bem e posso continuar com meu código, mas vamos dar uma olhada aqui e tentar descobrir o que realmente está acontecendo aqui.

O que estamos fazendo com esses dois números, como pegamos 17 e 29 e os transformamos em mil setecentos e vinte e nove? Bem, podemos multiplicar 17 por 100 e depois adicionar 29. E que tal 172 e 293 para obter cento e setenta e dois mil duzentos e noventa e três? Multiplique 172 por 1000 e some 293. Mas e apenas 2 e 9? Multiplique 2 por 10 e some 9 para obter 29.

Então, espero que agora um padrão esteja aparente para você. Podemos conceber uma fórmula matemática para fazer esse cálculo para nós, em vez de apenas usar strings. Para concatenar quaisquer dois números, aeb, precisamos obter o produto de a e 10 à potência do comprimento b e adicionar b.

Então, como obtemos o comprimento do número b? Bem, poderíamos transformar b em uma string e obter a propriedade length dela.

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

Mas tem que haver uma maneira melhor de fazer isso sem cordas, certo? Sim existe.

insira a descrição da imagem aqui

Para quaisquer dois números, aeb, com qualquer base B. Vamos multiplicar a pela base B à potência do comprimento b (usando a base do log de b, em seguida, parando para obter o número inteiro mais próximo e adicionando 1 a ele) em seguida, adicionando b.

Portanto, agora nosso código se parece com este:

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

Mas espere, e se eu quisesse fazer isso na base 2 ou 8? Como eu posso fazer isso? Não podemos usar nossa fórmula que acabamos de criar com qualquer outra base, exceto a base 10. O objeto JavaScript Math já tem funções integradas para a base 10 e 2 (apenas Math.log), mas como obtemos funções de log para qualquer outra base? Dividimos o log de b pelo log da base.Math.log(b) / Math.log(base).

Portanto, agora temos nosso código baseado em matemática totalmente funcional para concatenar dois 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

Se você soubesse que faria apenas matemática de base 10, poderia adicionar uma verificação de que a base é indefinida e definir 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 facilitar para mim, usei o protótipo para adicionar a função ao objeto Number:

    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
fonte
8

Você também pode usar a toStringfunção para convertê-lo em string e concatenar.

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

Outra possibilidade poderia ser esta:

var concat = String(5) + String(6);
Rui Lima
fonte
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
fonte
1

Esta é a maneira fácil de fazer isso

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

Eu converti de volta para o número assim ..

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

saída 1245

- editar -

Desculpe,

para meu uso, isso ainda não funcionou para mim após o teste. Tive que adicionar o zero que faltava de volta, pois ele estava sendo removido em números menores que 10, meu uso é para permitir que o código seja executado em determinados momentos. Pode não estar correto, mas parece funcionar (até agora).

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;

}

A votação foi boa, obrigado :)

Eu sou novo nisso e vim aqui para aprender com vocês uma explicação do porquê seria legal.

De qualquer forma, atualizei meu código para mostrar como consertei meu problema, pois este post me ajudou a descobri-lo.

Christopher Lowe
fonte
0

Eu prefiro o concatcaminho:

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

Você também pode usar uma matriz que pode ajudar em alguns casos de uso:

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

Você pode retornar um número usando este truque:
não recomendado

[a] + b - 0

Exemplo:

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

Para adicionar a todas as respostas acima, quero compartilhar a lógica de fundo:

Mais é um operador de adição que também é usado para concatenação de strings. Quando queremos concatenar números. Deve-se entender que queremos concatenar as strings, já que a concatenação de números não me torna casos de uso válidos.

Podemos alcançá-lo de várias maneiras,

Por meio de conversão de tipo

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

Isso também vai funcionar e fazer a conversão de tipos em segundo plano,

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

Se você está determinado a concatenar duas strings e o tipo de saída deve ser int, parseInt () funciona aqui

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