索引中数组大小的数组未定义

时间:2015-11-13 14:53:40

标签: javascript arrays angularjs angularjs-scope

我需要创建一个初始化为对象长度的数组。然后能够将新数据插入到数组中的索引中。

代码示例:

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

但是上面会出错:

TypeError: Cannot set 'new_data' of undefined

如果我指定了数组的大小,那该怎么办?数组是不是要包含三个对象。我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:3)

在这种情况下,[0]中的第一个Array元素必须为Object,因为现在它是undefined并且您无法将属性分配给undefined,您需要创建空Object{}),然后为其指定属性

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