Ответ 1
найти позицию индекса отфильтрованного значения в исходном массиве
Попробуйте следующее:
<div ng-repeat="person in data | filter: {id:20}">
{{data.indexOf(person)}}
</div>
Выход: 2
Демо Fiddle
$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. Как его найти?
найти позицию индекса отфильтрованного значения в исходном массиве
Попробуйте следующее:
<div ng-repeat="person in data | filter: {id:20}">
{{data.indexOf(person)}}
</div>
Выход: 2
Демо Fiddle
Вот небольшая вспомогательная функция для нахождения индекса объекта в массиве при заданном значении свойства:
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 во втором объекте в массиве.
вы можете использовать значение $index
для циклов.
<div ng-repeat="person in data | filter: {id:20}">{{$index+1}}<div>