2017-02-18 82 views
0
var arr = [ 
    { 
    groups: { 
     TypeID: 'AV601' 
    } 
    } 
] 

var prop = { 
    TypeID: 'AV601' 
} 

console.log(arr[0].groups); 
console.log(prop); 
console.log(arr[0].groups === prop)// false 

這怎麼能給出錯誤?他們是一樣的?比較等於對象給出false,javascript

https://jsbin.com/giholunupa/edit?js,console

+0

可能重複[爲什麼兩個相同的對象不相等](http://stackoverflow.com/questions/11704971/why-are-two-identical-objects-not-equal-to-彼此)。 – ryeballar

回答

1

這是因爲使用Javascript參照比較對象,而不是由按鍵平等。這兩個對象具有相同的鍵名和相同的鍵值,但在內存中,它們指向不同的地址。

let o1= {}; // points to address "#aaa" in memory 
let o2= {}; // points to address "#bbb" in memory 

o1 === o2; // false 
+0

好的。所以我必須比較每個道具? – Per

+1

最好參考這是一個重複的Q&A – trincot

+0

@PerStröm,這取決於你的任務是什麼。如果你想知道對象是否有相同的鍵/值對,是的,你必須通過鍵進行比較。如果你想知道它是否是同一個對象,你必須通過引用來比較。 –