2015-06-16 3 views
-1

У меня странная ситуация.Пустой объект в Javascript

Я беру некоторые значения из формы и сохраняю их в объекте.

Я распечатываю значения, и он отлично печатает в журнале консоли. Но когда я пытаюсь получить к нему доступ или печатать снова в следующей строке. Он возвращает пустой.

Вот код.

var family = {}; 
    var counter = []; 

    counter = document.querySelectorAll(".familyMemberBox input[name='member[]']"); 

    for(x=0;x<counter.length;x++){ 
       console.log('for loop'); 
       family[x] = {}; 

       member_number = counter[x].value; 
       member_type = get_member_type(member_number); 
       gender = get_gender(member_number); 
       age = get_age(member_number); 

       family[x]['type'] = member_type; 
       family[x]['Gender'] = gender; 
       family[x]['Age'] = age; 
    } 

    for(x=0;x<counter.length;x++){ 
     console.log(family[x]); 
    } 

      console.log('family: '+family[0]); 

здесь вывод на консоль

enter image description here

+2

'console.log (семья [х]);' регистрирует объект. 'console.log ('family:' + family [0]);' регистрирует представление _string объекта_, которое (если вы не переопределяете его) "[object Object]" –

+1

Это просто консольное форматирование. Попробуйте: 'console.log ('family:'); console.log (family [0]); ' – tymeJV

+1

Это не пустой объект, это всего лишь строка для объекта. Попробуйте 'console.log (« family », family [0])' вместо – Bergi

ответ

1

Вы делаете это строка с этим утверждением: console.log('family: '+family[0]);.

Вы неявно вызываете .toString(), когда вы объединяете строку с простым объектом. Строковая версия объекта: [object Object]. Это не пусто, не волнуйся.

Если вы собираетесь показать строку строки объекта, вы, вероятно, захотите пропустить и распечатать каждую пару ключей и значений, но это, вероятно, неэффективно. Если вы решительно настроены на печать family к консоли, используйте запятую:

console.log('family: ', family[0]); // should show two individual statements, not just one coerced string 
+1

Вау, похоже rookie ошибка. Спасибо за подробный ответ. Я буду использовать его в цикле. Это было просто проверить, правильно ли я читал эти значения. – Atif

1

Эта линия: console.log('family: '+family[0]); будет принуждать family[0] в строку перед печатью. Это не означает, что объект пуст.

Попробуйте вместо этого:

console.log('family: '); 
console.log(family[0]); 
Смежные вопросы