web-dev-qa-db-fra.com

AngularJS: recherche la position d'index de la valeur filtrée dans le tableau d'origine

$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 - Index de l'élément filtré dans le tableau actuel.

Dans cet exemple, parent_index devrait retourner 2. comment le trouver?

33
Thilaga

trouve la position d'index de la valeur filtrée dans le tableau d'origine

Essaye celui-là:

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

Sortie: 2

Démo Fiddle

81
Maxim Shoustin

Voici une petite fonction d'assistance permettant de rechercher l'index d'un objet dans le tableau sur une valeur de propriété donnée:

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;
    }

exemple:

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

Le script ci-dessus aurait pour résultat index = 1 car la propriété "a" a la valeur 2 dans le deuxième objet du tableau.

5
Gawran

vous pouvez utiliser $index valeur pour les boucles.

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