2015-05-06 3 views
0

Я делаю codecademy прямо сейчас, и у меня проблема с одним уроком, который включает в себя петли for-in. Требование Тхи упражнения войти «счет» и «Стиву на консоль. Тем не менее, я получаю весь массив, кроме этих двух строк регистрируемых вместо этого. Что здесь происходит?Javascript for-in loop issue

var friends = { 
    bill: {firstName: "Bill", 
      lastName: "Ferny", 
      number: "452-556-5412", 
      address: ['One Bree Hill', 'Bree', 'Middle Earth', '00000'] 
      }, 
    steve: {firstName:"Steve", 
      lastName:"Rogers", 
      number:"805-223-5568", 
      address: ['1500 Settlers Court', 'Paso Robles', 'CA', '93446'] 
      } 
    }; 
    var list = function (friends) { 
     for (var p in friends) { 
    console.log(friends[p]); 
    } 
    }; 
    list(friends); 
+0

Не совсем уверен, какой результат вы видите, не могли бы вы добавить то, что получаете. – phuzi

+0

Вы регистрируете значения, а не ключи. –

+1

'friends [p]' указывает на объект '{...}', подсказка: вы хотите свойство * этого объекта. –

ответ

1

в for-in цикла, переменная устанавливается в именах свойств. Так что если вы хотите, чтобы войти имя свойства, используйте console.log(p). friends[p] это значение, что имя свойства карты в объекте.

2

изменения console.log(friends[p]); в console.log(friends[p].firstName); .

+0

Это может быть обман, но 'console.log (p)' тоже может работать. –

0

Вам нужно указать, что вы хотите еще дальше.

Это:

console.log(friends[p]); 

должен быть изменен на это:

console.log(friends[p].firstName); 

Ваш код только становится вам все свойства, связанные с friends[bill] и friends[steve]. Вам нужны их имена, поэтому вам нужно использовать точечную нотацию и добавить .firstName в конец ваших console.log() операторов.

Как отметили другие люди, вы также можете использовать console.log(p), который регистрирует имя свойства (так что счет и steve), но поскольку вы находитесь на Codecademy, я думаю, что они захотят использовать первый метод, о котором я упоминал.