4

Javascript では、配列内のオブジェクトのプロパティの名前をループする賢い方法はありますか?

guest1 から guest100 までのいくつかのプロパティを持つオブジェクトがあります。以下のループに加えて、長い手で書き出すことなく、guestx プロパティをループする別のループが欲しいです。以下のコードを results[i].guest100 に記述しなければならない場合、リストは非常に長くなり、見栄えの悪いコードになります。

for (var i = 0; i < results.length; i++) {
if (results[i].guest1 != "") {
    Do something;
}
if (results[i].guest2 != "") {
    Do something;
}
if (results[i].guest3 != "") {
    Do something;
}
etcetera...
}
4

3 に答える 3

5

これを試して:

for (var i = 0; i < results.length; i++) {
    for (var j=0; j <= 100; j++){
        if (results[i]["guest" + j] != "") {
            Do something;
        }
    }
}
于 2012-05-12T18:52:15.603 に答える
3

[]オブジェクト プロパティの構文で文字列名を作成して、プロパティにアクセスします。

// inside your results[i] loop....
for (var x=1; x<=100; x++) {
  // verify with .hasOwnProperty() that the guestn property exists
  if (results[i].hasOwnProperty("guest" + x) {
     // JS object properties can be accessed as arbitrary strings with []
     // Do something with results[i]["guest" + x]
     console.log(results[i]["guest" + x]);
  }
}
于 2012-05-12T18:50:43.977 に答える
2

「in」演算子が役立つと思います。

if (("guest" + i) in results[i]) { /*code*/ } 

乾杯

于 2012-05-12T18:51:17.797 に答える