我想使用for循环遍历数组,而不是使用foreach,我无法打破循环。但是在for循环中我将$ scope.items [i]视为未定义! 这里我根据条件在数组中动态添加值。
$scope.items= [{
name: 'abhishek',
credit: 1233,
debit: 0,
balance: 12
}];
for (var i = 1; i <= $scope.items.length; i++) {
console.log($scope.items.length);
if ($scope.selectedName.value === $scope.items[i].name) {
console.log($scope.items[i].name + "forif" + true);
break;
}
else {
console.log($scope.items[i].name + "forelse " + false);
break;
}
}
答案 0 :(得分:2)
这是因为你在索引1处开始你的for循环。在Javascript中对数组进行了0索引,因此将i = 1
更改为i = 0
并且你应该能够访问该对象( s)在你的阵列中。
因此,for
循环应使用小于(<
)运算符而非({<=
运算符来检查索引是否小于数组的长度{1}})。
来源:MDN
JavaScript数组是零索引的:数组的第一个元素是索引0,最后一个元素的索引等于数组的长度属性减去1的值。
此代码运行正常(我不知道您是如何设置selectedName
的,但我只是在我的示例中对其进行了硬编码:
$scope.selectedName = {value: 'abhishek'};
$scope.items= [{
name: 'abhishek',
credit: 1233,
debit: 0,
balance: 12
}];
for (var i = 0; i <= $scope.items.length; i++) {
console.log($scope.items.length);
if ($scope.selectedName.value === $scope.items[i].name) {
console.log($scope.items[i].name + "forif" + true);
break;
}
else {
console.log($scope.items[i].name + "forelse " + false);
break;
}
}
}
&#13;
答案 1 :(得分:0)
您正在迭代对象的数组,因此您需要遍历内部循环内对象的属性
我们还希望避免使用for in
循环,因此使用Object.keys()
。
for (let item of $scope.items)
for (let key of Object.keys(item))
console.log(key, '->', item[key])
会显示
name -> abhishek
credit -> 1233
debit -> 0
balance -> 12
答案 2 :(得分:0)
一些观察结果:
$scope.selectedName
。$scope.items[i].name
,其中i
的值最初在for循环中分配给1
。因此,$scope.items[1]
不存在。 您必须更改for loop
逻辑。
使用此功能:
for (var i = 0; i < $scope.items.length; i++) { ... }
代替:
for (var i = 1; i <= $scope.items.length; i++) { ... }
工作演示:
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl',function($scope) {
$scope.items= [{
name: 'abhishek',
credit: 1233,
debit: 0,
balance: 12
}];
$scope.selectedName= {
value: 'abhishek'
};
for (var i = 0; i < $scope.items.length; i++) {
console.log($scope.items.length);
if ($scope.selectedName.value === $scope.items[i].name) {
console.log($scope.items[i].name + "forif" + true);
break;
}
else {
console.log($scope.items[i].name + "forelse " + false);
break;
}
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
</div>
&#13;