我在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中查找项目吗?
答案 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});