使用多维数组循环对象

时间:2016-05-12 16:04:20

标签: javascript arrays angularjs angular-promise

我使用angular中的promises从服务器获取一些数据。在承诺成功我做

promise.success(function (data, status) {                          
  for (i = 0; i <= data.data.length; i++){
    $scope.anArray[i]  = data.data[i][1] ;
  }   
}                     

我这样做是因为来自服务器的data具有此结构

{"result":"answered","data":[["jake","508"],["amir","602"],["ben","450"]]}

我只想获得数字508,602和450.但是我总是得到同样的错误TypeError: Cannot read property '0' of undefined$scope.anArray[i] = data.data[i][0] ;

这些数字被用于创建图表的库。有时会创建图表,有时则不会。即使它被创建,也始终存在相同的错误。

我不知道如何修复该错误并始终创建图表而没有任何问题。看起来代码不喜欢data.data[i][0]结构,像data.data[i]这样的简单数组不会产生错误。

我该怎么办?

由于

1 个答案:

答案 0 :(得分:1)

你的for循环有一个额外的执行。您已将i初始化为0,但您还使用了<=,这意味着您将在array[array.length]上执行,这是在债券之外。返回undefined,当您尝试访问该未定义的[0]索引时,您会收到该错误。

更改为

for (i = 0; i < data.data.length; i++){

如果您能够亲自完成作业,我会选择

$scope.anArray = data.data.map(entry => entry[1]);

并完全跳过for循环。注意如果你想避免使用lambdas,这将是

$scope.anArray = data.data.map(function(entry) { return entry[1]; });