2013-08-29 3 views
0

У меня есть объект JavaScript, называемый данными. Я использую следующий код для сортировки ключей в объекте:Доступ к объекту JavaScript с помощью ключа

var index = []; 

// build the index 
for (var x in data) { 
    index.push(x); 
} 

// sort the index 
index.sort(function (a, b) { 
    return a == b ? 0 : (a > b ? 1 : -1); 
}); 

Затем я хочу, чтобы получить доступ к значению для конкретного ключа индекса следующим образом:

for (var i=0; i<index.length; i++) { 
    var key = index[i]; 
    document.getElementById(key).value = data.key; 
} 

Однако я получаю не определено для значения data.key. Может кто подскажет почему?

+0

я вычеркнул в "JSON" термин из вашего вопроса. JSON подразумевает строку: если вы можете зацикливать ее с помощью конструкции 'for()', она не может быть строкой. –

ответ

3

Изменения в

document.getElementById(key).value = data[key]; 

Если ключ, который вы хотите получить доступ хранится в переменной, вы должны использовать кронштейн обозначения. В вашем коде JavaScript будет искать ключ с именем «ключ» и, таким образом, не работает.

Пример:

var key = 'test'; 

console.log(data.key); // yields content of data.key 
console.log(data[key]); // yields content of data.test 
+0

Чтобы уточнить: объект 'document' является частью DOM, поэтому он используется для обработки HTML-документов, а не объектов JavaScript. –

0

Как насчет

Object.keys(data)[key] ? 

Не уверен, что он будет работать, не показывая структуру данных.

edit: Этот способ извлекает ключ объекта в соответствии с числовым индексом (0,1 ..., n), а не по имени.

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