在Javascript中将数字连接为字符串

时间:2013-06-06 15:12:29

标签: javascript string-concatenation

myCoolObject {
  a: 0
  b: 12
  c: 24
}

我想连接abc,使它们看起来像一个唯一的字符串“abc”(或示例中的“0-12-24”)。< / p>

abc将始终代表数字。将它们中的每一个从int转换为字符串需要大量代码:如果我在PHP或C中,我只使用sprintf(),但是如何在不使用toString()的情况下在JS中执行此操作参数和编写太多代码?

整个代码:

var pickedDate = this.getSelectedDay().year.toString() + "-" + this.getSelectedDay().month.toString() + this.getSelectedDay().day.toString();

真的?在js中没有更有效的方法吗?

5 个答案:

答案 0 :(得分:5)

var myCoolString = myCoolObject.a + '-' + myCoolObject.b + '-' + myCoolObject.c;

编辑:

使用ES6,您可以使用template strings将数字插入字符串:

let myCoolString = `${myCoolObject.a}-${myCoolObject.b}-${myCoolObject.c}`;

试一试:

&#13;
&#13;
var myCoolObject = {
  a: 0,
  b: 12,
  c: 24
};

var myCoolString = myCoolObject.a + '-' + myCoolObject.b + '-' + myCoolObject.c;

console.log(typeof myCoolString);
console.log(myCoolString);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

  

如果没有编写太多代码,我怎么能在JS中做到这一点?

如果您知道所有数字都是正数,那么您可以编写更少的代码来实现我们所知的 JavaScript 从左到右执行的代码。

var obj = {a: 0, b: 12, c: 24}; /* define object
String + Number = String
                  String + Number = String
                                    String + Number = String
String + Number + Number + Number     = String    */
  ''   +  obj.a + -obj.b + -obj.c; // = "0-12-24"

由于-插入了String + -Number = "String-Number",例如

'AK' + -47 // "AK-47"

答案 2 :(得分:1)

  1. 尝试使用sprintf() JavaScript。

  2. 将新方法添加到字符串

    if (!String.prototype.format) {
    String.prototype.format = function() {
       var args = arguments;
       return this.replace(/{(\d+)}/g, function(match, number) { 
          return typeof args[number] != 'undefined'
           ? args[number]
            : match
          ;
       });
      };
    }
    
    "{0} - {1} - {2}".format(myCoolObject.a, myCoolObject.b,myCoolObject.c)
    

答案 3 :(得分:1)

这主要通过Array.join完成:

var pickedDate = [
    this.getSelectedDay().year, 
    this.getSelectedDay().month, 
    this.getSelectedDay().day
].join("-")

虽然我个人更喜欢类似于pythonic format()的小实用功能:

format = function(fmt /*, args */) {
    var args = [].slice.call(arguments, 1);
    return fmt.replace(/{(\d+)}/g, function($0, $1) { 
        return String(args[$1])
    })
}

然后:

var pickedDate = format('{0}-{1}-{2}', 
    this.getSelectedDay().year, 
    this.getSelectedDay().month, 
    this.getSelectedDay().day)

答案 4 :(得分:1)

没有太多代码,这里看起来很完美demo

myObj = {
  a: 0,
  b: 12,
  c: 24
}; 

var r="";

// iterate through all object properties
for (var p in myObj) 
{
    //concatenate it
    r+=myObj[p]+"-";
}

//remove the last dash
r=r.substring(0,r.length-1);

alert(r.substring(0,r.length-1));