Mam obiekt tablicy

users[{object1}; {object2}, {object3}];

Gdzie każdy obiekt ma atrybuty poniżej

object.userId
object.userName
object.email

Próbuję uzyskać konkretny obiekt, gdy klikam zakres, który reprezentuje każdy obiekt.

Np.: - Kiedy klikam span.id= 1, próbuję uzyskać obiekt z tablicy, która ma userid == 1

Próbowałem, jquery .eq(), grep() , get(), ale nic nie działa.

-1
pappu_kutty 25 listopad 2013, 14:38

4 odpowiedzi

Najlepsza odpowiedź

Możesz użyć $.grep()

var lis = [{'id':1, 'name':"honke"}, {'id':2, 'name':"hinke"}];
var found = $.grep(lis, function(el) {
  return el.id === 1;
});
alert(found[0].id);
3
Henrik Andersson 25 listopad 2013, 10:41

Obiekty w JavaScript są zasadniczo słownikiem, więc jeśli robisz dużo wyszukiwania, możesz użyć tego:

var users = { 1: {object1}, 2: {object2},: 3: {object2}};

Następnie możesz:

var user1 = users[span.id];

Alternatywnie musisz uruchomić pętlę for przez tablicę, aż znajdziesz obiekt, gdzie .userId == span.id

0
Keith 25 listopad 2013, 10:43

Możesz użyć funkcji JQuery Grep:

var result = jQuery.grep(obj, function( obj, i ) {
    return ( obj.userId == 1 );
});
0
PKolos 25 listopad 2013, 10:45

Musisz pętli przez każdy obiekt, aby go znaleźć.

for(var user in users){
    if(users[user].userId == 1){
        console.log(users[user]);
        return users[user];
    }
}

Oto JS Fiddle Code.

Ale aby był bardziej wydajny, powinieneś Użyj mapy, jak Keith zasugerował.

0
Community 23 maj 2017, 10:30