我使用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]
这样的简单数组不会产生错误。
我该怎么办?
由于
答案 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]; });