Как проверить, существует ли значение в этом массиве JavaScript?

У меня есть массив JavaScript, где каждый новый элемент, добавленный в массив, получает следующий инкрементный номер. Примером может быть следующее (я надеюсь, что я написал это правильно):

ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];

Массив называется ArrayofPeople, сохраняя несколько точек данных для каждого человека.

Мне нужно знать, существует ли в массиве элемент с идентификатором 820 или нет. Как это сделать?

Ответ 1

Что-то вроде этого:

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

Ответ 2

Вы должны перебрать массив и вручную проверить, есть ли у вас соответствующий идентификатор:

function getPersonById(id){
    for(var i=0,l=ArrayofPeople.length;i<l;i++)
       if(ArrayofPeople[0][i].id == id)
           return ArrayofPeople[i];
    return null;
}

Конечно, это довольно неэффективно. Я предлагаю вам хранить ваши объекты в ассоциативном массиве (объект a.k.a.), индексированный идентификатором человека. Затем доступ к человеку с определенным идентификатором является непосредственным, поскольку объекты - это ничего, кроме хеш-таблиц:

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

Ответ 3

Вы можете использовать относительно новый Array.prototype.some(), чтобы определить, существует ли элемент (в документации имеется прокладка):

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

Ответ 4

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

Ответ 5

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