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

Thi*_*aga 33 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>
Run Code Online (Sandbox Code Playgroud)

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

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

Max*_*tin 81

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

试试这个:

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

输出: 2

演示 Fiddle

  • 哈!感谢Parris Varney从12月9日发表的评论--Prisris Varney从5月9日开始就被困在同一个问题上. (3认同)

Gaw*_*ran 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;
    }
Run Code Online (Sandbox Code Playgroud)

例:

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");
Run Code Online (Sandbox Code Playgroud)

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