2015-11-13 2 views
1

Мне нужно создать массив, инициализированный длиной объекта. Затем сможете вставлять новые данные в индекс внутри массива.Массив с индексом в размере массива не определен

Пример кода:

$scope.holder = new Array($scope.x.length); 
$scope.holder[0].new_data = response.data; 

Однако выше будет давать ошибку:

TypeError: Cannot set 'new_data' of undefined 

Как это может быть, если я указал размер массива? Является ли массив не имеющим трех объектов. Как я могу решить эту проблему?

+0

'$ scope.holder [0]' еще не определен, массив имеет три неопределенных элемента – Hacketo

ответ

3
$scope.holder = new Array($scope.x.length); 
$scope.holder[0] = {'new_data': response.data}; 

UPD: Или вы можете создать массив объектов

$scope.holder = Array.apply(null, Array($scope.x.length)).map(function() { return new Object(); }) 
$scope.holder[0].new_data = response.data; 
+0

Работает так же, как и вы! ai jai jai такие глупые вещи – cfl

3

В этом случае первый [0] элемент Array должен быть Object, потому что теперь это undefined и вы не можете присвоить свойство undefined, вам необходимо создать пустой Object ({}), а затем присвоить ему свойства

$scope.holder = new Array($scope.x.length); 
$scope.holder[0] = {}; 
$scope.holder[0].new_data = response.data; 
+1

Работает спасибо! ai jai jai такие глупые вещи – cfl

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