myCoolObject {
a: 0
b: 12
c: 24
}
我想连接a
,b
和c
,使它们看起来像一个唯一的字符串“abc”(或示例中的“0-12-24”)。< / p>
a
,b
和c
将始终代表数字。将它们中的每一个从int转换为字符串需要大量代码:如果我在PHP或C中,我只使用sprintf()
,但是如何在不使用toString()
的情况下在JS中执行此操作参数和编写太多代码?
整个代码:
var pickedDate = this.getSelectedDay().year.toString() + "-" + this.getSelectedDay().month.toString() + this.getSelectedDay().day.toString();
真的?在js中没有更有效的方法吗?
答案 0 :(得分:5)
var myCoolString = myCoolObject.a + '-' + myCoolObject.b + '-' + myCoolObject.c;
编辑:
使用ES6,您可以使用template strings将数字插入字符串:
let myCoolString = `${myCoolObject.a}-${myCoolObject.b}-${myCoolObject.c}`;
var myCoolObject = {
a: 0,
b: 12,
c: 24
};
var myCoolString = myCoolObject.a + '-' + myCoolObject.b + '-' + myCoolObject.c;
console.log(typeof myCoolString);
console.log(myCoolString);
&#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)
尝试使用sprintf() JavaScript。
将新方法添加到字符串
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));