2015-01-01 30 views
1

我在java-script數組中有以下lat/long集合。從jQuery中的數組中查找重複的lat long

locData=[[32.0770488,34.7958072],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077589,34.774565],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077795,34.774825],[32.077589,34.774565],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.083678,34.775796],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.115119,34.818128],[31.749309,35.236047]]; 

現在我想找到重複的經/緯此數組中,並生成包含重複的數組列表,新的數組。

我的代碼:

for (var i = 0; i < locData.length; i++) { 
     var title = JSON.stringify(titleData[i]); 
     var id = JSON.stringify(ids[i]); 
     title = title.replace(/[[\]/"]/g, ""); 
     id = id.replace(/[[\]/"]/g, ""); 
     var count = 0; 
     var multiArray = [];  

     for(var j=0; j<locData.length; j++){ 
      if(locData[i][0] === locData[j][0] && locData[i][1] === locData[j][1]){ 
       count++; 

       if(count>1){ 
        //alert(locData[i]); 
        //console.log(locData[i]); 
        multiArray.push(locData[i]); 

       } 

      } 
     } 
     console.log(multiArray); 
} 

但沒有產生結果,因爲我與獨特的重複,每次想它是什麼辦法?

+0

什麼是titleData?它是undefined –

+0

它只是用於存儲特定緯度/經度的標題和相同的ID我會用multiArray推這一點,一旦解決:) – Rajnikanth

回答

0

試試這個代碼

var multiArray = []; 
for (var i = 0; i < locData.length; i++) { 

     var count = 0; 
     for(var j=0; j<locData.length; j++){ 
      if(locData[i][0] === locData[j][0] && locData[i][1] === locData[j][1]){ 
       count++; 
       if(count>1){ 
         var mult_indx = 0; 
         for(x in multiArray) 
         { 
          if(locData[j][0] == multiArray[x][0] && locData[j][1] == multiArray[x][1]) 
          { 
           mult_indx++; 
          } 
         } 
         if(mult_indx==0) 
         { 
          multiArray.push(locData[i]); 
         }      
        locData.splice(j,2); 
       }    
      } 
     } 
} 

console.log(multiArray); 

你reslut將

[[32.0776696,34.7683079] 
[32.07849,34.773982] 
[32.077795,34.774825] 
[32.077589,34.774565] 
[32.079743,34.770179]] 
0

試試下面的代碼:

locData=[[32.0770488,34.7958072],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.07849,34.773982],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077589,34.774565],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077795,34.774825],[32.077589,34.774565],[32.077795,34.774825],[32.077795,34.774825],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.077589,34.774565],[32.083678,34.775796],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.079743,34.770179],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.0776696,34.7683079],[32.115119,34.818128],[31.749309,35.236047]]; 
var dupArr = [] 
var templocData = locData.join("|"); 
$.each(locData, function(index, value) { 
    //console.log(index + ': ' + value);  
    //console.log($.inArray(value , locData )); 
    var searchVal = ""+value+""; 
    //console.log(countInstances(templocData,searchVal)); 
    //console.log(templocData);  
    //console.log(searchVal);  
    if (countInstances(templocData,searchVal) >= 1 && $.inArray(searchVal, dupArr) == -1) { 
     dupArr.push(searchVal); 
    } 
}); 
function countInstances(string, word) { 
    var substrings = string.split(word); 
    return substrings.length - 1; 
} 
console.log(dupArr); 

因此,其結果將是:

["32.0770488,34.7958072", "32.0776696,34.7683079", "32.07849,34.773982", "32.077795,34.774825", "32.077589,34.774565", "32.083678,34.775796", "32.079743,34.770179", "32.115119,34.818128", "31.749309,35.236047"]