通过深度索引访问数组元素

Accessing array elements by deep index

本文关键字:访问 数组元素 索引 深度      更新时间:2023-09-26

我在访问一个元素时遇到问题,该元素位于资源树的最后一个叶子上。不过,我在使用迭代器迭代元素时遇到了问题。我想得到$scope.values数组中每个值的type.id。它们都具有type.id属性。

罪犯:

for (var i=0; i < $scope.values.length; i++) {
    Type.getType({id:$scope.values[i].type.id}, function (results) {
         $scope.values[i].type = results;
         return results;
    });
}

提供:TypeError:无法设置未定义的属性"type"

错误的行和行将光标放在:$scope.values[i].type=results;然而,我可以很好地记录结果,它是一个有2个项目的资源数组

然而,如果我在两个地方都更改了这两种更标准的访问元素的方法,它们就可以正常工作。

$scope.values[0]

$scope.values["0"]

我在这里错过了什么?

你不知道Type.getType是做什么的,所以我不知道你作为第二个参数应用的函数什么时候被调用,也许它是回调?。但我很确定,当调用这个函数时,I的值并不是你想要的。这不是一个闭包,我似乎在全局范围内。

你可以这样试试:

for (var i=0; i < $scope.values.length; i++) {
    Type.getType({id:$scope.values[i].type.id}, function (results) {        
          var index = i;
         $scope.values[index].type = results;
         return results;
    });
}