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...