자바 스크립트에서 두 숫자를 연결하는 방법은 무엇입니까?


107

대신 5 + 6반환 하고 싶습니다 ."56"11


3
글쎄, 당신은 확실히 많은 답을 얻었습니다. 나는 올바른 모든 것에 투표하고 있습니다.
David

일부 답변에는 중간에 빈 문자열이 있습니다. 이상하게 보이며 왜 그것이 누구에게 바람직한 지 궁금합니다. 처음에 따옴표를 사용하는 것은 의도를 빠르게 나타내며 두 ​​개 이상의 숫자를 연결해야하는 경우 추가 생각이 필요하지 않기 때문에 더 합리적입니다. 나는 유권자들이 동의한다고 생각하지만 중간 근거 뒤에 역사적 또는 다른 이유가 있는지 궁금합니다.
MrBoJangles

답변:


152

"" + 5 + 6문자열에 강제로 사용 합니다. 이것은 수치 변수에서도 작동합니다.

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


좋습니다. 값 5와 6은 두 개의 변수에 있습니다. var1 = 5; var2 = 6; 그래도 작동
Heidi

3
이 답변은 편집해야합니다. 확실히 이것이 더 나은 접근 방식입니다. const numbersAsString = `${5}${6}`;
Pavol Travnik


26

이제 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

개인적으로 새 구문이 훨씬 더 명확하지만 약간 더 장황하다는 것을 알았습니다.






11

나는 이것이 오래된 게시물이고 여러 번 답변을 받았다는 것을 알고 있습니다. 나도 자바 스크립트에 이것을 할 수있는 기능이 있는지 궁금했다. 저는 수학 프로그래밍을하고 있었고 두 숫자를 연결해야했습니다.

그래서 두 숫자 17과 29를 결합해야한다면 어떨까요? 물론 그것들을 문자열로 바꾸고 연결 한 다음 새 문자열을 다시 숫자로 바꿀 수 있습니다. 그것은 꽤 잘 작동하는 것 같고 내 코드로 계속 진행할 수 있지만 여기를 살펴보고 여기에서 실제로 무슨 일이 일어나고 있는지 알아 보겠습니다.

이 두 숫자에 대해 우리는 무엇을하고 있습니까? 17과 29를 어떻게 1 천 칠백 이십 구로 바꿀까요? 17에 100을 곱한 다음 29를 더할 수 있습니다. 그리고 172와 293이 1 백 72 이천 이백 구십 삼을 구하려면 어떨까요? 172에 1000을 곱하고 293을 더합니다.하지만 2와 9는 어떨까요? 2에 10을 곱한 다음 9를 더하여 29를 얻습니다.

그래서 지금 쯤이면 패턴이 당신에게 분명해질 것입니다. 우리는 단순히 문자열을 사용하는 것이 아니라 우리를 위해이 계산을 수행하는 수학 공식을 고안 할 수 있습니다. 두 숫자 a와 b를 연결하려면 a와 10의 곱을 길이 b의 거듭 제곱으로 취한 다음 b를 더해야합니다.

그렇다면 숫자 b의 길이를 어떻게 구할까요? 음, 우리는 b를 문자열로 바꾸고 그것의 길이 속성을 얻을 수 있습니다.

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

하지만 문자열없이이를 수행하는 더 나은 방법이 있어야합니다. 네, 있습니다.

여기에 이미지 설명 입력

두 숫자, a와 b, 어떤 염기 B에 대해. 우리는 길이 b의 거듭 제곱에 a를 밑수 B로 곱할 것입니다 (b의 밑수를 로그로 사용하고 가장 가까운 정수를 얻기 위해 바닥을 깔고 여기에 1을 더합니다) 그런 다음 b를 추가합니다.

이제 코드는 다음과 같습니다.

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

하지만 잠깐, 제가 2 진법이나 8 진법에서 이것을하고 싶다면 어떨까요? 어떻게 할 수 있습니까? 우리가 만든 공식을 기본 10이 아닌 다른 기본으로 사용할 수 없습니다. JavaScript Math 객체에는 이미 기본 10과 2에 대한 기본 제공 함수가 있습니다 (Math.log 만). 다른 기지? b의 로그를 밑의 로그로 나눕니다.Math.log(b) / Math.log(base).

이제 우리는 두 숫자를 연결하기 위해 완전히 작동하는 수학 기반 코드를 갖게되었습니다.

    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 진수 계산 만 수행 할 것이라는 것을 알고 있다면 base가 정의되지 않았는지 확인한 다음 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

더 쉽게하기 위해 프로토 타입을 사용하여 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


4

또 다른 가능성은 다음과 같습니다.

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

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


1

이렇게 다시 숫자로 바꿨어요 ..

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

출력 1245

-- 편집하다 --

죄송합니다,

내 사용을 위해 이것은 테스트 후에도 여전히 작동하지 않았습니다. 10보다 작은 숫자에서 제거되었으므로 누락 된 0을 다시 추가해야했습니다. 내 용도는 특정 시간에 코드를 실행하도록하는 것입니다. 정확하지 않을 수 있지만 (지금까지) 작동하는 것 같습니다.

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;

}

투표가 좋았습니다. 감사합니다 :)

나는 이것에 익숙하지 않으며 왜 좋았을 지에 대한 설명을 너희들로부터 배우기 위해 여기에 왔습니다.

이 게시물이 문제를 파악하는 데 도움이되었으므로 어쨌든 내 문제를 해결하는 방법을 보여주기 위해 코드를 업데이트했습니다.


0

나는 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

이 트릭을 사용하여 숫자 를 반환 할 수 있습니다 .
권장되지 않음

[a] + b - 0

예 :

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

0

위의 모든 답변에 추가하려면 배경 논리를 공유하고 싶습니다.

Plus 는 문자열 연결에도 사용되는 더하기 연산자입니다. 숫자를 연결하고 싶을 때. 숫자의 연결은 나에게 유효한 사용 사례를 만들지 않기 때문에 문자열을 연결하고 싶다는 것을 이해해야합니다.

여러 가지 방법으로 달성 할 수 있습니다.

유형 변환을 통해

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

이것은 또한 작동하고 백그라운드에서 유형 변환을 수행합니다.

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

두 문자열을 연결하기로 결정하고 출력 유형이 int 여야하는 경우 parseInt ()가 여기에서 작동합니다.

parseInt(5 +""+ 5)  //Output 55 Type "number"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.