使用未命名的数组

时间:2015-06-09 16:16:02

标签: javascript json xmlhttprequest

我正在调用API并成功取回这样的数组:

[ {
  "absmag" : "4.85",
  "speed" : "0",
  "colorb_v" : "0.65",
  "label" : "Sun",
  "appmag" : "-26.72",
  "distance_light_years" : "0",
  "id" : "53794",
  "hipnum" : "0",
  "vy" : "0",
  "updated_at" : "49:09.3",
  "vx" : "0",
  "vz" : "0",
  "texnum" : "1",
  "plxerr" : "0",
  "created_at" : "49:09.3",
  "plx" : "0",
  "dcalc" : "0",
  "z" : "0",
  "luminosity" : "0.8913",
  "y" : "0",
  "x" : "0"
}
 ]

我如何参考这些线?我想做类似的事情:

var database = xml.responseText;
console.log(database.label);

4 个答案:

答案 0 :(得分:1)

xml.responseText是一个数组,您需要在显示label之前访问好的索引:

var database = xml.responseText;
console.log(database[0].label); // Add [0] because your example is an array of one element if you have more index refer to the edit  

如果响应是字符串,则需要在使用之前解析响应:

var database = JSON.parse(xml.responseText);
console.log(database[0].label);

修改:

如果您的数组有多个索引,则可以使用foreach循环:

database.forEach(function(el) {
    console.log(el.label);
})

答案 1 :(得分:1)

答案的关键在于你的问题。 。 。那个值是一个数组。 。 。单个元素数组,其唯一元素是对象。因此,您必须像数组一样访问数组元素(即使用索引),然后,由于该单个数组元素是一个对象,您必须像对象一样访问对象的属性(即使用键)。 / p>

使用您的示例代码:console.log(database[0].label);。 。 。 [0]为您提供database数组的第一个(也是唯一的)元素,.label为您提供该对象的“label”属性的值。

答案 2 :(得分:1)

如果我理解正确,您希望结果数组不仅包含原始问题所描述的一个对象,而且可以包含许多对象。

如果这是正确的,那么通过@ R3tep ,@ talemyn 和@ trjast 扩展正确的答案,这个数组顶部的循环应该也有帮助,恕我直言。

var database=xml.responseText;
var length=database.length;
for(var i=0;i<length;i+=1){
  console.log(database[i].label);
}

有用?

答案 3 :(得分:0)

您可以使用

引用label
var database = xml.responseText[0];  
console.log(database.label);