3 回答

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

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