当我在添加后立即阅读时,为什么我添加到JavaScript数组中的对象会像未定义一样返回



我意识到此代码非常丑陋,但是我在JavaScript上遇到了一些麻烦。我看不出为什么以下child不是a task to derive from

          var childrenToOperateOn = [];
          for (var i = 0; i < $scope.derivedTasksToIndent.length; i++) {
            if($scope.derivedTasksToIndent[i].todosernm == todo.todosern){
              childrenToOperateOn.push($scope.derivedTasksToIndent[i]);
              console.log("Affecting child: " + $scope.derivedTasksToIndent[i].todotask);
              for (var child in childrenToOperateOn) {
                console.log("Confirm child: " + child.todotask);
              }
            }
          }

相反,当我尝试从childrenToOperateOn数组中读回值时,我会得到undefined

(index):145 Affecting child: A task to derive from
(index):147 Confirm child: undefined

我不确定是否重要,但是我正在使用AngularJS,这可能很明显。

我将如何保留适当的价值及其属性?我在做什么错?

使用for ... of代替for ... in

for (var child of childrenToOperateOn) {
    console.log("Confirm child: " + child.todotask);
}

for..of和for ..在语句中迭代列表;但是,迭代的值不同,因为..在返回迭代的对象上的键列表,而for..of返回迭代对象的数字属性的值列表。

更多信息在这里:https://www.typescriptlang.org/docs/handbook/iterators-anderators-anderators-and-generators.html

最新更新