2014-10-20 3 views
0

Sooo, похоже, я не знаю, что я делаю.Почему я не могу получить значение объекта JS?

Я думал, что делает массив объектов:

$.each(oldList, function(key, item) { 
    self.items.push([{ 
      "name": $(item).data('name') , 
      "id": $(item).data('id') , 
      "lat": $(item).data('lat') , 
      "lng": $(item).data('lng') , 
      "index": key 
    }]); 
}); 

Тогда я делаю это:

$.each(self.items, function(key, item) { 
    console.log(item); 
}); 

И результат:

enter image description here

Но когда я попробуйте сделать это console.log(item.name); Я просто получаю undefined.

Может ли кто-нибудь увидеть, что я делаю неправильно?

+0

'консоли .log (item [0] .name); 'должен работать. – Regent

+0

Как показывает результат, 'item' является массивом, а не объектом. Ответ указывает, что вы нажимаете массив на 'self.items', а не на объект. –

ответ

2

Вы нажимаете массив, содержащий один элемент, на self.items вместо нажатия объекта.

$.each(oldList, function(key, item) { 
    self.items.push({ 
      "name": $(item).data('name') , 
      "id": $(item).data('id') , 
      "lat": $(item).data('lat') , 
      "lng": $(item).data('lng') , 
      "index": key 
    }); 
}); 

Так что в вашем втором каждом цикле item представляет собой массив с одним элементом, не является объект так item.name не определен, но вы можете использовать item[0].name для доступа имени (без изменения push кода)

+0

Huh ... Я не уверен, что происходит, но я ** действительно думал, что попробовал это, посмотрев на этот учебник: http://www.copterlabs.com/blog/json-what-it-is- how-it-works-how-to-use-it/ – Steven

+0

@Steven существует разница между 'push ([{' и 'push ({' (между толкающим массивом, состоящим из одного объекта и нажатием объекта). – Regent