2014-06-17 8 views

risposta

10

questo non è un problema specifico di angularjs ma un normale javascript. solo loop e restituire l'indice

var list = [{ id="5", country="UAE"}, { id="4", country="India"}]; 

for (var i = 0; i < list.length ; i++) { 
     if (list[i][id] === 4) { 
      return i; 
     } 
} 

si può quindi rendere più generica, rendendo funzione di matrice che accetta il valore e la proprietà nome

Array.prototype.getIndexOfObject = function(prop, value){ 
    for (var i = 0; i < this.length ; i++) { 
      if (this[i][prop] === value) { 
       return i; 
      } 
    } 
} 
20

Il modo angularjs (utilizzando il filtro $) sarebbe qualcosa di simile

app.controller('MainCtrl', ['$scope', '$filter', function($scope, $filter) { 

    //array 
    var items = [{ id: "5", country: "UAE" }, { id: "4", country: "India" }]; 

    //search value 
    var id2Search = "4"; 

    //filter the array 
    var foundItem = $filter('filter')(items, { id: id2Search }, true)[0]; 

    //get the index 
    var index = items.indexOf(foundItem); 
}]); 
3

È possibile utilizzare la funzione di mappa() per iterare su ogni oggetto nella matrice e ispezionare qualsiasi proprietà desiderata. Ad esempio se si dispone di una matrice di oggetti

$scope.items = 
[ 
{'id':'1','name':'item1'}, 
{'id':'2','name':'item2'} 
]; 

per ottenere l'indice del secondo oggetto dell'array utilizzare

var index = $scope.items.map(function (item) { 
      return item.id; 
     }).indexOf(2); 

restituisce l'indice dell'oggetto contenente il valore di 2 nella proprietà id .

Problemi correlati