如何在循环中获取数组元素的索引?

时间:2015-04-25 16:55:41

标签: angularjs

我有一个循环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) {});

4 个答案:

答案 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)
     }