2014-01-19 49 views
0

我试图访问一个数组内的对象的属性之一。这是我如何设置的。如何从数组中的对象访问属性?

var 2002 = [{"st_as_str":"01006000102","parm_desc":"ALKALINITY, TOTAL","sub":"ALKALINITY","is_fil":false,"is_reac":false,"date":"2002-09-02","time":"16:45","field_num":70237,"lims_r":"","result":137.0,"val_qual":"","ana_meth":"E3218A","unit":"MILLIGRAM PER LITER"}, 

{"st_as_str":"01006000102","parm_desc":"ALKALINITY, TOTAL","sub":"ALKALINITY","is_fil":false,"is_reac":false,"date":"2002-09-08","time":"14:30","field_num":70240,"lims_r":"","result":142.0,"val_qual":"","ana_meth":"E3218A","unit":"MILLIGRAM PER LITER"}] 
//These two lines are actually one. I broke them up to make this somewhat readable. Also, this is a portion of the file. 

我一直在试图访问这样的属性:

alert(2002[0].parm_desc);

如:alert(array[object at this index].thisproperty)虽然它似乎并不奏效。这是我的更多代码。

<script> 
     function getScript(url, callback) { 
      var script = document.createElement('script'); 
      script.type = 'text/javascript'; 
      script.src = url; 

      script.onreadystatechange = callback; 
      script.onload = callback; 

      document.getElementsByTagName('head')[0].appendChild(script); 
     } 

     //this works and I am getting the alerts 
     getScript('./analysis_valqualifi.js', function(){ 
      alert("Analysis Method: " + analysis_method[0][1]); 
      alert("Lims_ValQualifi: " + lims_valqualifi[0][1]); 
     }); 

     //this isn't working 
     getScript('./2002_results.js', function(){ 
      alert(2002[0].parm_desc); 
     }); 
    </script> 

第2个警报后还有15-20秒延迟我的其他脚本运行之前,所以我敢肯定JavaScript被读取文件和我的语法不正确。

+1

变量不能以数字开头。 – elclanrs

回答

1

您的变量2002是违法的。如果您尝试直接在Chrome的开发者工具控制台的第一线(S),它会立即报告如下:

var 2002 = [{"st_as_str":"01006000102","parm_desc":"ALKALINITY, TOTAL","sub":"ALKALINITY","is_fil":false,"is_reac":false,"date":"2002-09-02","time":"16:45","field_num":70237,"lims_r":"","result":137.0,"val_qual":"","ana_meth":"E3218A","unit":"MILLIGRAM PER LITER"}, ... 

SyntaxError: Unexpected number 

如果单纯的前缀,它有一个字符,例如:

var s2002 = [{"st_as_str":"01006000102","parm_desc":"ALKALINITY, TOTAL","sub":"ALKALINITY","is_fil":false,"is_reac":false,"date":"2002-09-02","time":"16:45","field_num":70237,"lims_r":"","result":137.0,"val_qual":"","ana_meth":"E3218A","unit":"MILLIGRAM PER LITER"}, {"st_as_str":"01006000102","parm_desc":"ALKALINITY, TOTAL","sub":"ALKALINITY","is_fil":false,"is_reac":false,"date":"2002-09-08","time":"14:30","field_num":70240,"lims_r":"","result":142.0,"val_qual":"","ana_meth":"E3218A","unit":"MILLIGRAM PER LITER"}] 

这工作得很好。请参阅this post以获取变量名称规则的完整摘要。

+0

谢谢,scotth。我会投你一票,但我没有代表。希望最好的答案是够好的。 – user3210944

1

需要考虑的几点:

变量名称不能以数字开头。例如,将其更改为“data2002”。

JSON对象中的属性可以是数字,但这会在您的数组中创建空隙。你的代码中没有这个问题,但只是把它放在那里。

如果属性名称为空格,例如{'Test Mode':true},您可以使用以下语法访问它:

var testmode = obj['Test Mode']; 
+0

非常感谢。不幸的是,我没有代表投票给你,但。 – user3210944