43

I have JSON objects that have several properties such as an id and name. I store them in a JavaScript array and then based on a dropdownlist I want to retrieve the object from the JavaScript array based on its id.

Suppose an object has id and name, how do I select them from my array variable?

var ObjectsList = data; var id = $("#DropDownList > option:selected").attr("value"); ObjectsList["id=" + id]; 
1
  • You need to show the actual JSON data that you're trying to select from in order for us to be able to advise how to access it.
    – jfriend00
    CommentedNov 29, 2011 at 5:51

1 Answer 1

60

Since you already have jQuery, you could use $.grep:

Finds the elements of an array which satisfy a filter function. The original array is not affected.

So something like this:

var matches = $.grep(ObjectsList, function(e) { return e.id == id }); 

that will leave you with an array of matching entries from ObjectsList in the array matches. The above assumes that ObjectsList has a structure like this:

[ { id: ... }, { id: ... }, ... ] 

If you know that there is only one match or if you only want the first then you could do it this way:

for(var i = 0, m = null; i < ObjectsList.length; ++i) { if(ObjectsList[i].id != wanted_id) continue; m = a[i]; break; } // m is now either null or the one you want 

There are a lot of variations on the for loop approach and a lot of people will wag a finger at me because they think continue is a bad word; if you don't like continue then you could do it this way:

for(var i = 0, m = null; i < ObjectsList.length; ++i) { if(ObjectsList[i].id == wanted_id) { m = ObjectsList[i]; break; } } 
1
  • 3
    This did the trick just had to put [0] at the end to select the first element of the new array that matches the filter.
    – sergioadh
    CommentedNov 29, 2011 at 14:52

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.