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

を連結aしたいので、一意の文字列「abc」(または例では「0-12-24」)のように見えます。bc

a、常に数値を表しますbcそれらのそれぞれを int から string に変換するには、多くのコードが必要ですsprintf()。PHP または C を使用している場合はそのまま使用しますが、JS でこれを行うにはtoString()、各パラメーターを使用せずに多くのコードを記述しないようにするにはどうすればよいでしょうか?

コード全体:

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

真剣に?jsでこれを行うより効率的な方法はありませんか?

4

5 に答える 5

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

編集:

ES6 では、テンプレート文字列を使用して数値を文字列に補間できます。

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);

于 2013-06-06T15:14:00.513 に答える
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)
于 2013-06-06T15:24:43.080 に答える
1

多くのコードがなくても完璧に見えます ここにデモがあります

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));
于 2013-06-06T15:27:03.530 に答える
1
  1. JavaScript のsprintf()を試してください。

  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)
    
于 2013-06-06T15:17:51.683 に答える