У меня есть объект, который я пытаюсь заполнить другим объектом (то есть перебрать возвращаемый объект, чтобы получить объект только с выбранными значениями из оригинала). Мой код выглядит так:
var collect = {};
function getHistoricalData(username){
$.getJSON("http://url/" + username + ".json?params",
function(data){
for (var i=0; i < data.length; i++) {
console.log(i);
collect = { i : {text : data[i].text}};
$("#wrap").append("<span>" + data[i].text + "</span><br />");
};
console.log(collect);
});
}
Итак, я использую Firebug для отладки, и вот что я знаю:
- Объект JSON не поврежден
console.log(i);
показывает числа 1-20, как и ожидалось
Когда я в конце записываю объект collect
, его структура такова:
var collect = { i : {text : "the last iteration's text"}};
Таким образом, инкрементатор "применяет" к data [i] .text и возвращает текстовое значение, но он не делает то, что ожидал, а именно создает новый элемент объекта collect; он просто перезаписывает collect.i
20 раз и оставляет меня с последним значением.
Есть ли другой синтаксис, который мне нужно использовать для назначения членов объекта? Я попытался collect.i.text =
и collect[i].text =
, и ошибка заключалась в том, что все, что я пробовал, было неопределенным.
Мне бы очень хотелось узнать, что здесь происходит, поэтому чем глубже объяснение, тем лучше.
Спасибо!