如何在Array对象中查找项目

时间:2012-02-17 06:28:15

标签: jquery arrays object

我在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 :(得分:0)

您可以更改数组,使其更像字典。这样您就不必搜索整个数组,只需进行一次查找。

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

现在您不必检查id是否存在,因为它将替换它(如果存在),如果不存在则创建一个新ID。如果您想检查它是否存在,只需使用typeof方法并检查它是否未定义。

答案 1 :(得分:0)

这可能会回答您的问题:Leveraging JQuery find or inArray method to find an item in an array

阅读第一个答案的评论。

答案 2 :(得分:0)

inArray方法只匹配确切的对象,所以如果对象相同,那么就可以像使用它一样;

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

但如果您只想检查id,可以使用grep选择id为的对象数学运算:

if(jQuery.grep( array, function(a){return a.id==item}).length ==1)
 array.push({id: item,name: somename});