小智 141
使用"" + 5 + 6它强制字符串.这也适用于数值变量:
var a = 5;
var b = 6;
console.log("" + a + b);tex*_*a83 21
您现在可以使用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
就个人而言,我发现新语法更清晰,虽然稍微冗长一些.
您还可以使用toString函数将其转换为字符串并连接.
var a = 5;
var b = 6;
var value = a.toString() + b.toString();
我知道这是一个旧帖子,已经被多次回答。我也想知道JavaScript是否具有可以做到这一点的功能。我正在做一些数学编程,需要连接两个数字。
因此,如果我需要将两个数字17和29相结合,该怎么办。当然,我可以将它们转换为字符串并将其连接起来,然后将新的字符串转换为数字。这似乎工作得很好,我可以继续编写我的代码,但是让我们在这里看看并试图弄清楚这里到底发生了什么。
我们要对这两个数字做些什么,我们如何取17和29并将其变成17920?好吧,我们可以将17乘以100,然后再加上29。那么172和293怎么能得到172.293万?将172乘以1000,再加上293。但是,仅2和9呢?将2乘以10,然后加9得出29。
因此,希望到现在为止,您应该已经可以看到一种模式。我们可以设计一个数学公式来为我们进行这种计算,而不仅仅是使用字符串。要连接任意两个数字a和b,我们需要将a和10的乘积取为长度b的幂,然后加b。
那么我们如何获得数字b的长度?好吧,我们可以将b变成字符串并获取它的length属性。
    a * Math.pow(10, new String(b).length) + b;
但是必须有一种更好的方法来完成此操作而不使用字符串,对吗?就在这里。
对于任意两个数字,a和b,以及任何底数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的对数除以base的对数。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 = 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
| 归档时间: | 
 | 
| 查看次数: | 78128 次 | 
| 最近记录: |