Ответ 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);
У меня есть массив JavaScript, где каждый новый элемент, добавленный в массив, получает следующий инкрементный номер. Примером может быть следующее (я надеюсь, что я написал это правильно):
ArrayofPeople[0] = [{"id": "529", "name": "Bob"}];
ArrayofPeople[1] = [{"id": "820", "name": "Dave"}];
ArrayofPeople[2] = [{"id": "235", "name": "John"}];
Массив называется ArrayofPeople
, сохраняя несколько точек данных для каждого человека.
Мне нужно знать, существует ли в массиве элемент с идентификатором 820 или нет. Как это сделать?
Что-то вроде этого:
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);
Вы должны перебрать массив и вручную проверить, есть ли у вас соответствующий идентификатор:
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;
}
Вы можете использовать относительно новый 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
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);
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);