2009-11-12 15 views
78

5 + 6のように、11の代わりに"56"を返すことをお勧めします。JavaScriptで2つの数字を連結する方法は?

+3

まあ、あなたは確かに多くの答えを持っています。私はすべて正しいものを投票しています。 – David

+0

答えのいくつかは真ん中に空の文字列を持っています。私は奇妙に見えます。なぜ誰にとってそれが好ましいのだろうと思っていました。最初に引用符を付けることは、意図を素早く示し、2つ以上の数字を連結しなければならない場合には、追加の考えを必要としないので、より意味があるように見えます。私は投票者が同意すると思うが、中間の根拠の根底に歴史的理由や他の理由があるかどうか疑問に思う。 – MrBoJangles

答えて

115

"" + 5 + 6を使用して文字列に強制します。これも、数値変数で動作します:

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

+0

さて、値5と6を指定すると、2つの変数になります。 var1 = 5; var2 = 6; それはまだ動作します – Heidi

+0

はい、それは動作します。私はデモの答えを編集しました。 –

19

だけ使用します。

5 + "" + 6 
16

単純な答え:

5 + '' + 6; 
25
var value = "" + 5 + 6; 
alert(value); 
15
var output = 5 + '' + 6; 
12

文字列にそれを強制するために使用

var value = "" + 5 + 6; 

var concat = String(5) + String(6); 
2

別の可能性は、この可能性があります。

var a = 5; 
var b = 6; 
var value = a.toString() + b.toString(); 
1

これは、あなたはまた、文字列と連結する、それを変換するtoString機能を使用することができ、この

var value=5+""+6; 
2

を行うための簡単な方法です:

5

テンプレートリテラルES6を使用できるようになりました。

const value = `${5}${6}`; 

それとも、あなたが持っている場合は、変数:

const value = `${someInt}${someOtherInt}`; 

は個人的に私は少し冗長なとはいえ、新しい構文がより明確に見つけます。

1

これは古い投稿であり、何度も回答されています。私もJavaScriptにこれを行う機能があるかどうか疑問に思っていました。私は数学のプログラミングをしていて、2つの数字を連結する必要がありました。

2つの数字17と29を組み合わせる必要がある場合はどうすればよいでしょうか?もちろん、それらを文字列に変換して連結し、新しい文字列を数値に戻すことができます。それはかなりうまくいくと思われ、私は自分のコードで進むことができますが、ここで見て、ここで本当に何が起こっているのか理解しようとします。

私たちはこれら2つの数字に何をしているのですか。私たちは17と29をどのようにして1000と279にしますか?私たちは17を100倍して29をつけることができます。そして、172と293は、どのようにして1702と233を得るのですか? 172を1000倍して293を加えます。しかし、2と9はどうでしょうか? 2を10倍してから9を足して29を得ます。

今のところパターンはあなたには明らかです。文字列を使用するだけでなく、この計算を行うための数式を考案できます。 aとbの2つの数を連結するには、aと10の積を長さbのべき乗にしてからbを加える必要があります。

番号bの長さはどのようにして取得できますか?さて、bを文字列に変換し、その長さのプロパティを得ることができます。

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

しかし、文字列なしでこれを行う方が良いでしょうか?はいあります。我々は、取得するためにそれをフローリング、次にBのログベースを使用して(長さbの電源にベースBを掛けしようとしている任意のベースBとの任意の二つの数字、A及びBについて

enter image description here

それに1を加える)し、bを加える。

だから今我々のコードは次のようになります。

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

しかし、私はベース2またはベース8でこれをやりたい場合は、待つのか?どうやってやるの? JavaScriptのMathオブジェクトには、基本的に10および2の組み込み関数(Math.logのみ)が既に用意されていますが、どのようにして他の基地? bのログをbaseのログで除算します。 Math.log(b)/Math.log(base).

は、だから今我々は2つの数値を連結するための私達の完全に機能する数学ベースのコードがあります。

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 

をあなたが唯一のベース10数学をやっているつもりだった知っていたならば、あなたはベースのチェックを追加することができます定義されていませんその後、セットベース= 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 

は私のためにそれを容易にするために、私は、Numberオブジェクトに機能を追加するためにプロトタイプを使用しました10

1
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 
関連する問題