AngularJs:在数组中赋值时获得意外输出?

时间:2016-12-02 07:19:58

标签: javascript angularjs

我正在尝试将这两个值插入到js数组中。

$scope.ttabs = [];

for(p = 1; p <= $scope.no_of_groups; p++) {
    $scope.ttabs[p] = [1];  
    console.log($scope.ttabs);  
}

p $ scope.no_of_groups此处的值为2.

现在我得到控制台输出为..

[undefined, [1], [1]]

为什么它在第一个索引处显示未定义?

3 个答案:

答案 0 :(得分:3)

因为你从索引1开始。数组的索引从0开始。在您的代码中,您没有为索引0分配任何值,因此它将具有默认值未定义

将代码更改为从0开始,并从条件中删除等号。

$scope.ttabs = [];

for(var p = 0; p < $scope.no_of_groups; p++) {
    $scope.ttabs[p] = [1];  
    console.log($scope.ttabs);  
}

console.log($scope.ttabs);  

输出

[[1], [1]]

答案 1 :(得分:2)

{{1}}

Javascript数组从第0个索引开始 所以你在第一个地方得到了不确定

答案 2 :(得分:0)

因为你开始p = 1,当你把它作为索引分配给数组时,数组的长度分配为2,因为数组是索引0的索引。因为在索引0处没有插入数组,所以索引未定义。

var ar = [];
for(var i = 1;i < 2;i++){
   ar[1] = 1;
}
console.log(ar) // outputs [undefined, 1, 1]

,同时:

var ar = [];
for(var i = 0;i < 2;i++){
   ar[1] = 1;
}
console.log(ar) // outputs [1, 1]