我想遍历一个数组$scope.todos
for (var i = $scope.todos.length - 1; i >= 0; i--) {
console.log($scope.todos[i]);
};
但$scope.todos.length
会返回0
。
$scope.todos
看起来像这样:
我做错了什么?我认为这不是一个关联数组?索引是数字?它不返回undefined
,只返回0.感谢您的帮助。
编辑:更多代码
'use strict';
angular.module('todos')
.controller('TodosController', ['$scope', '$location', '$state', '$stateParams', 'Todos',
function($scope, $location, $state, $stateParams, Todos) {
console.log($scope.todos);
console.log($scope.todos.length);
function calculateDayAygoForTodos(){
//foreach todo in todos
for (var i = $scope.todos.length - 1; i >= 0; i--) {
console.log("todos length");
console.log($scope.todos[i]);
};
}
解决方案:
问题是函数的异步性质,我试图在todos加载之前调用$scope.todos.length
。使用timeOut
函数解决了一个简单的延迟:
setTimeout(function() {
console.log($scope.todos.length);
}, 1000);
可能不是最佳解决方案,但现在我没有得到ùndefined`any,而是数组的长度。感谢War10ck指出这一点。
答案 0 :(得分:-1)
可能没有设置length属性。
@steppefox(在他的回答中)有一个很好的和可靠的迭代数组的方法。
迭代数组的另一种方法是使用lodash forEach函数,它的功能类似,但据说效果更好。
检查其他阵列操作的lodash。它有很多。
答案 1 :(得分:-2)
您可以使用:
循环遍历数组或对象angular.forEach($scope.todos,function(item,index){
});