2013-03-06 69 views
0

婁是我已經加入此折線對象到一個數組如何陣列的javascript對象比較與其他對象

var allpolylines = []; 
allpolylines.push(firstpolyline); 

喜歡這張我已經添加更多5個折線對象折線對象

var firstpolyline = new L.Polyline(myPointList, { 
    color: 'red', 
    weight: 5, 
    smoothFactor: 1 
    }); 

到這個數組。

現在我正在創建一個多折線對象。

var mytpolyline = new L.Polyline(myPointList, { 
    color: 'red', 
    weight: 5, 
    smoothFactor: 1 
    }); 

現在我想mytpolyline對象與數組對象數組&發現指數的比較對象。

我已經試過是

var index = allpolylines.indexOf(mytpolyline); 

但是這是不是給數組對象的索引。

回答

2

你不能直接比較的對象,他們從來都是平等的,除非你明確地引用他們

var a = {}; 
var b = {}; 
var c = a; 

b == a // false 
c == a // true 

如果您要檢查,如果你的數組中的對象是平等的,不幸的是你必須每個屬性單獨進行比較。

for (prop in a){ 
    if (a.hasOwnProperty){ 
     // compare a.prop to b.prop 
    } 
} 

隨着普通(非對象)的屬性和新版瀏覽器,你可以這樣做:

function comp(a,b){ 
    return Object.keys(a).every(function(prop){ 
     if (!b[prop]){ return false; } 
     else if (a[prop] !== b[prop]){ return false; } 
     return true; 
    }); 
} 

an example

參考文獻:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/every