3 回答

TA貢獻2080條經驗 獲得超4個贊
Javascript數組是對象,您不能簡單地使用相等運算符==來理解這些對象的內容是否相同。等于運算符將僅測試兩個對象實際上是否完全相同(例如myObjVariable==myObjVariable,適用于null且undefined也是如此)。
如果你需要檢查兩個數組是否相等,我建議只遍歷兩個數組并驗證所有元素是否具有相同的值(并且兩個數組的長度相同)。
關于自定義對象的相等性,我會構建一個特定的equals函數,然后將它添加到類的原型中。
考慮到最終你將兩個數組轉換為String測試結果字符串的相等性,有一天你可以考慮使用一個類似但更通用的技術,你會發現它在很多地方描述:
JSON.stringify(OBJ1) === JSON.stringify(OBJ2)
好吧,不要。
雖然如果屬性的順序對于那些對象實例總是相同的,這可能會起作用,但是這樣就可以打開那些難以追蹤的非常討厭的錯誤。總是喜歡更明確的方法,只需編寫一個干凈且可讀的函數來測試相等性檢查所有必需的字段。

TA貢獻1845條經驗 獲得超8個贊
該==
用于在JavaScript對象操作者僅檢查是否該對象是相同的實際對象引用,而不是如果它們包含相同內容的兩個單獨的對象。沒有內置運算符來檢查它們是否包含相同的內容。您必須自己編寫一個函數來進行這種比較。
只要數組元素只包含原始值(而不是其他對象),您的字符串轉換就是比較兩個數組的一種方法。如果數組元素可以包含其他元素,那么您必須確保這些對象本身也轉換為代表性字符串。
并且,轉換為字符串不會在包含的數組元素與包含的數組元素之間分辨"4"
,4
因為兩者都轉換為"4"
字符串表示形式。
添加回答
舉報