我有一个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操作来避免。
答案 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/。