AngularJS:在原始数组中查找过滤值的索引位置

时间:2013-12-24 07:26:14

标签: angularjs angularjs-ng-repeat

$scope.data = [
    {
    "name": "Jim",
    "id" : 25
    },
    {
    "name": "Jerry",
    "id": 27
    },
    {
    "name": "Rithika",
    "id": 20
    }
    ];

    <div ng-repeat="person in data | filter: {id:20}">
        {{parent_index}}
    </div>

parent_index - 实际数组中已过滤元素的索引。

在这个例子中,parent_index应该返回2.如何找到它?

3 个答案:

答案 0 :(得分:80)

  

在原始数组中找到过滤值的索引位置

试试这个:

<div ng-repeat="person in data | filter: {id:20}">
    {{data.indexOf(person)}}
</div>

输出:2

演示 Fiddle

答案 1 :(得分:5)

这是一个小辅助函数,用于在给定的属性值上查找数组中对象的索引:

function getIndexOf(arr, val, prop) {
      var l = arr.length,
        k = 0;
      for (k = 0; k < l; k = k + 1) {
        if (arr[k][prop] === val) {
          return k;
        }
      }
      return false;
    }

示例:

var arrOfobj = [
       {a:1, b:1, c:1}, //index 0
       {a:2, b:2, c:2}, //index 1
       {a:3, b:3, c:3} //index 2
    ];
var index = getIndexOf(arrOfobj, "2", "a");

上面的脚本会导致index = 1,因为属性“a”在数组中的第二个对象中的值为2。

答案 2 :(得分:2)

您可以使用$index值进行循环。

<div ng-repeat="person in data | filter: {id:20}">{{$index+1}}<div>