2013-03-03 3 views
-1

Мое понимание объектов JS слабо. Если я передаю набор объектов в новый массив, попробуйте получить длину или значение по определенному индексу (в качестве примера ниже) я возвращаю неопределенное сообщение. Есть ли очевидная ошибка здесь? Благодарю.Нажатие объекта в массив

var arrayTest = []; 
var objCollection = obj.name + obj.size + obj.weight; 
arrayTest.push(objCollection); 
alert(arrayTest[0]); // returns undefined 

Чтобы уточнить, я собираю выбор продукта клиента и возвращает его технические данные, хранящиеся в файле JSon - с целью размещения этого выбора в таблицу.

{ 
"name": "the name", 
"size": "the size", 
"weight": "the weight" 
}, 
+1

Что такое 'obj', и почему вы конкатенируете его элементы? – Alnitak

+0

После вашего редактирования это выглядит так: 'obj' не имеет ровно одного из этих свойств, а два других -' '' '. Проверьте код, который создает 'obj'. – Teemu

+0

Попробуйте следующее: var objCollection = '1:' + obj.name + ', 2:' + obj.size + ', 3:' + obj.weight; '. Что теперь означает «alert()»? – Teemu

ответ

0

Вы уверены objCollection фактически содержит значение? Мне кажется, что одно из полей объекта obj не определено, поскольку объединение значения с неопределенным объектом дает неопределенные значения. И, таким образом, вы нажимаете неопределенный объект на свой массив, а не на то, что хотите. См. Bergi's comment для коррекции.

+0

Да, есть значения, спасибо. –

+0

В этом случае у меня возникают трудности с воспроизведением вашей проблемы. Проверьте [this] (http://jsbin.com/irokij/1/edit) – igoratron

+0

«* конкатенация значения с неопределенным объектом дает неопределенные *» - Нет. Он возвращает строку, объединенную с '' undefined ''. – Bergi

Смежные вопросы