Как найти объект в массиве объектов - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть объекты массива в jquery, в которых есть n элементов

array={id:1, name:x};
array={id:2, name:y};
array={id:3, name:z};
.
.
.
.
array={id:n, name:n};

Теперь мне нужно найти определенный элемент в этом объекте массива, так как я не знаю индекс элемента.

if(array.id==item)
{
// change array.name=somename;
}
else
{
//add new value into array
array.push({id=item,name=somename});
}

Без использования индекса элемента у меня есть какой-либо параметр в foreach или какой-либо другой способ найти элемент в jquery?

Ответы [ 3 ]

0 голосов
/ 17 февраля 2012

Это может ответить на ваш вопрос: Использование метода JQuery find или inArray для поиска элемента в массиве

Прочитайте комментарии к первому ответу.

0 голосов
/ 17 февраля 2012

Метод inArray соответствует только точному объекту, поэтому, если объекты идентичны, вы можете использовать его как;

if(jQuery.inArray({id: item,name: somename})!=-1)
 array.push({id: item,name: somename});

, но если вы хотите проверить только идентификатор, вы можете использовать grep для выбора сочетания объектов сid как:

if(jQuery.grep( array, function(a){return a.id==item}).length ==1)
 array.push({id: item,name: somename});
0 голосов
/ 17 февраля 2012

Вы можете изменить свой массив так, чтобы он действовал больше как словарь.Таким образом, вам не нужно искать по всему массиву, а просто выполнить поиск.

dictionary = {};
dictionary[1] = {name:x};
dictionary[2] = {name:y};
...
dictionary[id] = {name:somename};

Теперь вам не нужно проверять, существует ли идентификатор или нет, так как он заменит егоесли он существует, и создайте новый, если его нет.Если вы хотите проверить, существует ли он, просто используйте метод typeof и проверьте, не определен ли он.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...