js怎麼判斷兩個物件相等?

2022-10-09 06:42:10 字數 718 閱讀 3262

es6 中有乙個方法判斷兩個物件是否相等,這個方法判斷是兩個物件引用位址是否一致

let obj1= 

let obj2 =

console.log(object.is(obj1, obj2)) // false

let obj3 = obj1

console.log(object.is(obj1, obj3)) // true

console.log(object.is(obj2, obj3)) // fals

當需求是比較兩個物件內容是否一致時就沒用了

想要比較兩個物件內容是否一致,思路是要遍歷物件的所有鍵名和鍵值是否都一致:

1、判斷兩個物件是否指向同一記憶體

2、使用 object.getownpropertynames 獲取物件所有鍵名陣列

3、判斷兩個物件的鍵名陣列是否相等

4、遍歷鍵名,判斷鍵值是否都相等

let obj1 = 

}let obj2 = ,

a: 1

}function isobjectvalueequal(a, b) else if (a[prop] !== b[prop])

} else

} return true

}console.log(isobjectvalueequal(obj1, obj2)) // false

js 判斷兩個物件是否相等

判斷兩個物件是否相等 isobjectvalueequal function a,b var aprops object.getownpropertynames a var bprops object.getownpropertynames b if aprops.length bprops.len...

js判斷兩個物件是是否相等

用object.is 只能判斷兩個物件應用的位址是不是一樣 如果兩個物件的應用位址不一樣。兩個物件對應的鍵和值是一樣的,應用位址不一樣。那麼這時候判斷兩個物件用object.is就行不通了 思路需要遞迴每個鍵看看對應的值是否一樣。鍵對應的值有兩種可能 如果是基本資料型別 判斷他們的值是否相等就行 如...

js 判斷兩個變數是否相等

判斷兩個變數是否相等是程式設計中非常重要的運算。在處理原始值時,這種運算相當簡單,但涉及物件,任務就稍有點複雜。ecmascript 提供了兩套等性運算子 等號和非等號用於處理原始值,全等號和非全等號用於處理物件。在 ecmascript 中,等號由雙等號 表示,當且僅當兩個運算數相等時,它返回 t...