如何在 javascript 中连接两个数字?

我希望像 5 + 6这样的东西返回 "56"而不是 11

135032 次浏览

使用 "" + 5 + 6将其强制为字符串。这也适用于数值变量:

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

使用:

5 + "" + 6

简单的回答:

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

使用

var value = "" + 5 + 6;

把它强加到弦上。

另一种可能性是:

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

这是最简单的方法

var value = 5 + "" + 6;

还可以使用 toString函数将其转换为字符串并连接。

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

您现在可以使用 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

就我个人而言,我发现新的语法更加清晰,尽管稍微有些冗长。

我知道这是一个老职位,并已回答了很多次。我也想知道 JavaScript 是否有这样的函数。我正在做一些数学编程,需要连接两个数字。

如果我需要把17和29这两个数字结合起来。当然,我可以将它们转换成字符串,然后将它们连接起来,然后将新的字符串转换回数字。这似乎工作得很好,我可以继续我的代码,但让我们看看这里,并试图找出什么是真正发生在这里。

我们怎么处理这两个数字,我们怎么把17和29转化成1729?我们可以把17乘以100再加上29。172和293怎么样得到172293?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;

但是一定有更好的方法来做到这一点,没有附加条件,对不对? 是的,有。

enter image description here

对于任意两个以 B 为基数的数 a 和 b。我们将 a 乘以基数 B 乘以长度 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 的 log 除以基的 log。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 is unDefinition 的检查,然后设置 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
// 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 this


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

我转换回数字,像这样:

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

输出

1245

我更喜欢 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('');

您可以使用以下技巧返回 号码:
不推荐

[a] + b - 0

例如:

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

为了补充上面的所有答案,我想分享一下背景逻辑:

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"