2015-10-29 85 views
-3
arr1 = [ 
    {Lattitude: '52,4043000', Location: 'a2', Longitude: '55,7181815'}, 
    {Lattitude: '52,3882320', Location: 'b2', Longitude: '55,7225500'}, 
    {Lattitude: '52,4041184', Location: 'c2', Longitude: '55,7172296'}, 
    {Lattitude: '52,3996194', Location: 'd2', Longitude: '55,7200249'}, 
]; 

arr2 = [ 
    {Lattitude: '52,3882320', Location: 'b2', Longitude: '55,7225500'}, 
    {Lattitude: '52,4041184', Location: 'c2', Longitude: '55,7172296'}, 
    {Lattitude: '52,3996194', Location: 'd2', Longitude: '55,7200249'} 
]; 

如何,我可以比較兩個JSON陣列ARR1,ARR2的得到的只是這個元素從ARR1 {Lattitude: '52,4043000', Location: 'a2', Longitude: '55,7181815'} 它沒有在ARR2如何採取元素從兩個JSON數組中的jQuery

我心底嘗試做像這

 function objDiff(arr1, arr2) { 
        var resultArray = []; 


for (var i = 0; i < arr1.length; i++) { 
         for (var j = 0; arr2.length; j++) { 
      if (parseFloat(parseFloat(arr1[i].Lattitude).toFixed(4)) != parseFloat(parseFloat(arr2[i].Lattitude).toFixed(4)) && 
           parseFloat(parseFloat(arr1[i].Longitude).toFixed(4)) != parseFloat(parseFloat(arr2[i].Longitude).toFixed(4))) { 
           resultArray.push(arr1[i]); 
          } 
         } 
        } 

        return resultArray; 
       } 

,但我沒有功能的作品,我不`噸知道爲什麼

回答

0

試試這個,

 function compareArr(arr1, arr2) { 
      var longArray = arr1.length >= arr2.length ? arr1 : arr2; 
      var shortArray = arr1.length < arr2.length ? arr1 : arr2; 

      return resultArr = longArray.filter(function (v) { 
       return shortArray.filter(function (iv) { 
        return v.Lattitude === iv.Lattitude 
          && v.Location === iv.Location 
          && v.Longitude === iv.Longitude; 
       }).length === 0; 
      }); 
     } 

     var resultArr = compareArr(arr2, arr1); 

在任何序列中將兩個數組傳遞給此函數,結果將相同。

+0

如果交換變量的內容,這可能不起作用。不知道OP如何成爲它!編輯後的 – Rayon

+0

也適用於變量交換。 – San

+0

該代碼將比循環執行速度快10倍。 – San

相關問題