Javascript for循环通过JSON值

tuc*_*son 0 javascript json

我有一个json对象r:

[ { "id"     : "3443",
    "name"   : "Joe",
    "date1"  : "254",
    "date4"  : "261"
  },
  { "id"     : "50942",
    "name"   : "John",
    "date2"  : "192",
    "date4"  : "195"
  },
  { "id"     : "2524",
    "name"   : "Mary",
    "date1"  : "153",
    "date4"  : "163"
  }
]
Run Code Online (Sandbox Code Playgroud)

我希望有一个Javascript For循环来完成dateX值.我知道X介于1和Max值之间.

但是以下代码不起作用:

for (j=1; j<=Max; j=j+1)
{
  datestring = 'date' + j;
  if (isset(r[i].datestring)) value[j] = r[i].datestring;
  else value[j] = null; 
}
Run Code Online (Sandbox Code Playgroud)

忘了解释我将isset函数定义为:

function isset(variable) {
     return typeof(variable) != "undefined" && variable !== null;
} 
Run Code Online (Sandbox Code Playgroud)

Ate*_*ral 10

首先使用普通的for循环遍历对象数组.然后迭代每个对象的属性for (var p in obj)并检查其值p.就像是:

for (var i = 0; i < arr.length; i++) {
    var obj = arr[i];

    for (var p in obj) {
        if (/^date\d+$/.test(p)) {
            var value = obj[p];
            // p is a dateX property name and value is the value
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

循环遍历所有可能的属性值以检查它们的存在是违反直觉和低效的.相反,循环实际属性并根据您的模式测试其名称.