2017-02-16 8 views
-1

Я, очевидно, не понимаю, как forEach работает в JavaScript, потому что, когда я запускаю следующий код, Я не получаю никакого вывода вообще. Что я недопонимаю или делаю неправильно? Благодаря!Нет вывода с JavaScript forEach

var id = []; 
id['battery'] = []; 
id['battery']['garage'] = 27; 
id['battery']['attic'] = 88; 
id['battery']['basement'] = 74; 
id['battery']['office'] = 62; 
id['battery']['hallway'] = 84; 

id['battery'].forEach(function(value, room) { 
    console.log("value = " + value + " | room = " + room); 
}); 
+1

'forEach' выполняет только итерации по ключам массива, которые являются целыми положительными. – 4castle

+0

JavaScript не имеет ассоциативных массивов; '.forEach()' выполняет только итерации с помощью свойств с индексом с целыми числами. – Pointy

+0

Возможный дубликат [Итерация через свойства объекта] (http://stackoverflow.com/questions/8312459/iterate-through-object-properties) – 4castle

ответ

2

Вы не можете использовать forEach с объектами. Но вы можете это сделать:

var id = { 
    battery: { 
    garage: 27, 
    attic: 88, 
    basement: 74, 
    office: 62, 
    hallway: 84 
    } 
}; 

for(var room in id.battery) { 
    console.log("value = " + id.battery[room] + " | room = " + room); 
}; 
+1

В таком случае также должна быть инструкция if if (id.battery.hasOwnProperty (комната)) ' – piotrbienias