用于从数组中查找重复项的Jquery代码

时间:2013-10-02 06:19:43

标签: jquery json

我有一个json数据。

data ={{"id":"10","name":"test"},{"id":"10","name":"test1"},{"id":"11","name":"tsst"},{"id":"41","name":"jhkj"},{"id":"11","name":"yuyyu"},}

从json数据我获取id从数据库表中获取location,如下所示

data.each(function( index ) {
    var id = index.id //gets 10
                       //again gets 10 and again doing db operations for same id value 
    //db operations 
      //get location details from db using this id    
    // operations after getting locations....................

    });

我的问题是id重复,即10,10,11,41 ,11。因此,对重复值也要调用db操作。如何通过为重复的id值调用db操作来避免。

4 个答案:

答案 0 :(得分:3)

尝试

var temp = {};
for(var i = 0; i < data.length ; i++ ){
    var obj = data[i];
    if(temp[obj.id] >= 0){
        data.splice(i, 1);
        i--;
    }
    temp[obj.id] = i;
}
console.log(data)

演示:Fiddle

答案 1 :(得分:2)

检查重复的ID可能会解决您的问题。

例如:

var dup= {};
data.each(function( index ) {
    var id = index.id;
    dup.push(id);
    if (dup[id])
        $(this).remove(); //OR DO nothing
    else
     //Your DB Operation

});

答案 2 :(得分:0)

我认为你必须避免为循环中的所有id调用数据库操作。只需将所有内容传递给后端,并在一次数据库操作中获取所需的所有ID数据。

答案 3 :(得分:0)

创建另一个数组,并在检查它是否存在后在其中添加值。

您可以为此目的使用inArray ref:http://api.jquery.com/jQuery.inArray/