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 回答