0

我有一个 json 数据。

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

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

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

4 回答 4

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)

演示:小提琴

于 2013-10-02T06:34:29.540 回答
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

});
于 2013-10-02T06:29:08.443 回答
0

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

于 2013-10-02T06:29:38.273 回答
0

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

为此,您可以使用 inArray 参考:http ://api.jquery.com/jQuery.inArray/ 。

于 2013-10-02T06:30:52.003 回答