it-swarm-ja.tech

javascriptで2つの数字を連結するにはどうすればよいですか?

5 + 6のようなものが"56"の代わりに11を返すようにしたいです。

96
Heidi

つかいます "" + 5 + 6強制的に文字列にします。これは数値変数でも機能します:

var a = 5;
var b = 6;
console.log("" + a + b);
138
user181548
var value = "" + 5 + 6;
alert(value);
27
jessegavin

ただ使用する:

5 + "" + 6
22
Brian Schroth

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

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

または、変数がある場合:

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

console.log(numbersAsString); // Outputs 56

個人的には、多少冗長ではありますが、新しい構文ははるかに明確です。

21
texta83

簡単な答え:

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

つかいます

var value = "" + 5 + 6;

強制的に文字列にします。

14
Nadir SOUALEM

toString関数を使用して文字列に変換し、連結することもできます。

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

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

したがって、2つの数値17と29を組み合わせる必要がある場合はどうでしょう。確かに、それらを文字列に変換して連結し、新しい文字列を数値に戻すことができます。これはかなりうまくいくようで、コードを続行できますが、ここを見て、実際に何が起こっているのかを理解してみましょう。

これらの2つの数値に対して何をしているのでしょうか。17と29をどのように取り、それを千729に変えるのでしょうか。さて、17を100倍してから29を足すことができます。そして、172と293で172を取得するにはどうすればいいですか。 172を1000倍して293を加算します。しかし、2と9だけはどうでしょうか。 2に10を掛けてから9を足して29を取得します。

うまくいけば、今までにパターンが明らかになるはずです。単に文字列を使用するのではなく、この計算を行う数学式を考案できます。任意の2つの数字aとbを連結するには、aと10の長さbの積を取り、bを追加する必要があります。

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

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

しかし、文字列なしでこれを行うより良い方法が必要ですよね?はいあります。

enter image description here

任意の2つの数値、aとb、任意の底B。aに底Bを長さbの乗数で乗算します(bの対数基底を使用してから、それをフローリングして最も近い整数を取得し、それに1を追加します)次にbを追加します。

したがって、コードは次のようになります。

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

しかし、待ってください。ベース2またはベース8でこれを行いたい場合はどうでしょうか。どうやってやるの? 10以外のベースで作成したばかりの式は使用できません。JavaScriptMathオブジェクトには、ベース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オブジェクトに追加しました。

_    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
_
6
Steven Kapaun

別の可能性はこれかもしれません:

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

このような数値に変換し直しました。

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

出力1245

-編集-

ごめんなさい、

私の使用では、これはテスト後もまだ機能しませんでした。 10未満の数値では削除されていたため、欠落しているゼロを追加し直さなければなりませんでした。特定の時間にコードを実行させるために使用します。

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;

}

投票はニースありがとうございました:)

私はこれが初めてで、なぜニースだったのかを説明するためにここに来ました。

とにかくコードを更新して、この投稿が問題を解決するのに役立ったので、問題をどのように修正したかを示しました。

1

これはこれを行う簡単な方法です

var value=5+""+6;
1

私はconcat方法を好む:

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

いくつかのユースケースで役立つ配列を使用することもできます:

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