我有一个循环Angular JS:
angular.forEach($scope.message, function (item) {
return (item.id_user == input.id_user) ? true : false;
});
如何在每个item
的循环中获取数组元素的索引?
我试过了:
angular.forEach($scope.message, function (item, $index) {});
答案 0 :(得分:46)
对不起社区的所有讽刺。您非常接近您的解决方案,但对文档有点困惑。没关系,让我帮忙澄清一下!
在angular.forEach的文档中,您会看到以下声明:
为obj集合中的每个项目调用迭代器函数一次,该项目可以是对象,也可以是数组。使用iterator(value,key,obj)调用迭代器函数,其中value是对象属性或数组元素的值,key是对象属性键或数组元素索引,obj是obj本身。指定函数的上下文是可选的。
然后是以下示例:
var values = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
}, log);
expect(log).toEqual(['name: misko', 'gender: male']);
基本上,代码是这样的:
angular.forEach('要循环的列表/数组的名称','要为列表的每个元素调用回调函数')
您错过的重要部分 是回调......'上面提到的3个变量可以在你的回调中使用。将为列表中的每个元素调用你的回调。以下是对这3个变量的一些解释:
值:列表/数组/对象中第i个元素/属性的值
键: i - 属于数组中当前项的索引
对象:对象本身(或数组/列表本身)
Here is an example我把你放在一起使用Key来创建一个新字符串,显示$ scope.message中每个字母的索引。希望这有帮助!
答案 1 :(得分:11)
angular.forEach($scope.arrayname,function(item,index){
console.log(item,index)
})
答案 2 :(得分:0)
有办法。
var index = 0;
angular.forEach($scope.message, function (item) {
return (item.id_user == input.id_user) ? index : false;
index = index + 1;
});
如果item.id_user == input.id_user else返回false,它将返回$ scope.message索引值。您还可以将$ scope.message [index]分配给其他范围变量,例如
var index = 0;
angular.forEach($scope.message, function (item) {
if(item.id_user == input.id_user){
$scope.message[index] = $scope.yourVariable;
}
index = index + 1;
});
答案 3 :(得分:0)
var items = ['a','b','c','d','e','f']
angular.forEach(items,function(item,index){
console.log(item)
console.log(index)
}