2015-06-09 2 views
2

Я зову к 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); 
+0

Это похоже больше на JSON, чем на XML ... – Buddy

ответ

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); 

E ДИТ:

Если массив имеет более одного индекса, вы можете использовать foreach цикл:

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

Как бы получить, скажем, все метки из массива, а не только [0]? –

+0

@Isaac Вы можете использовать цикл. Я обновил свой ответ. – R3tep

0

Вы можете сослаться на значение label с

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

Ключ к ответу на самом деле лежит в вашем вопросе. , , это значение является массивом. , , один элементный массив, единственным элементом которого является объект. Таким образом, вам нужно получить доступ к элементу массива, например массиву (то есть с индексом), а затем, поскольку этот одиночный элемент массива является объектом, вам необходимо получить доступ к свойствам объекта, например, объекту (то есть с ключами).

Используя код примера, который будет: console.log(database[0].label);. , , [0] получает первый (и только) элемент массива database, а .label получает значение свойства «label» этого объекта.

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); 
} 

Полезно?

+0

Да, очень полезно. Приветствия. –

Смежные вопросы