Reputation: 740
I have a JavaScript array, where each new item added to the array gets the next incremental number. An example would be as follows (I hope Im writing this correctly):
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];
The array is named ArrayofPeople
, storing multiple data points for each person.
I need to know if an element with id of 820 exists in the array or not. How would this be done?
Upvotes: 14
Views: 63096
Reputation: 41533
You should iterate over the array and manually check if you have a matching id:
function getPersonById(id){
for(var i=0,l=ArrayofPeople.length;i<l;i++)
if(ArrayofPeople[i][0].id == id)
return ArrayofPeople[i];
return null;
}
Of course, this is pretty inefficient. I suggest you store your objects into an associative array (a.k.a. an object) indexed by the person's id. Then, the access to a person with a certain id is immediate since objects are nothing than hash-tables:
ArrayofPeople = {};
ArrayofPeople[529] = {"id": "529", "name": "Bob"};
ArrayofPeople[820] = {"id": "820", "name": "Dave"};
ArrayofPeople[235] = {"id": "235", "name": "John"};
function getPersonById(id){
return id in ArrayofPeople
? ArrayofPeople[id]
: null;
}
Upvotes: 8
Reputation: 10315
Something like this:
function in_array(array, id) {
for(var i=0;i<array.length;i++) {
return (array[i][0].id === id)
}
return false;
}
var result = in_array(ArrayofPeople, 235);
Upvotes: 11
Reputation: 650
function IsIdInArray(array, id) {
for (var i = 0; i < array.length; i++) {
if (array[i].id === id)
return true;
}
return false;
}
var result = IsIdInArray(ArrayofPeople, 820);
Upvotes: 2
Reputation: 173662
You can use the relatively new Array.prototype.some()
to find whether an item exists (a shim is provided in the documentation):
var ArrayofPeople = [];
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];
function in_array(array, id)
{
return array.some(function(item) {
return item[0].id === id;
});
}
console.log(in_array(ArrayofPeople, '820')); // true
Upvotes: 4
Reputation: 10246
ArrayofPeople = new Array();
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];
var str = '820';
var is_found = 'not found';
for(item in ArrayofPeople){
target = ArrayofPeople[item][0];
if(target['id'] === str)
is_found = 'found';
}
alert(is_found);
Upvotes: 1