简体   繁体   中英

How to check if value exists in this JavaScript array?

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?

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

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

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM