Подтвердить что ты не робот

AngularJS: найти позицию индекса отфильтрованного значения в исходном массиве

$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. Как его найти?

4b9b3361

Ответ 1

найти позицию индекса отфильтрованного значения в исходном массиве

Попробуйте следующее:

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

Выход: 2

Демо Fiddle

Ответ 2

Вот небольшая вспомогательная функция для нахождения индекса объекта в массиве при заданном значении свойства:

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");

Script выше приведет к индексу = 1, потому что свойство "a" имеет значение 2 во втором объекте в массиве.

Ответ 3

вы можете использовать значение $index для циклов.

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