日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断两个对象是否相等java_判断两个对象的内容是否相等

發布時間:2025/3/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断两个对象是否相等java_判断两个对象的内容是否相等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于在做鍵盤導航組件的項目時,有這樣一個需求,當用戶傳入按鍵字母和網址的映射時,如果和 localStorage 中的不一樣那么就用 localStorage 中存儲的,這個時候就需要比較兩個對象的內容是否相等,但是在 JS 中對象是一種引用類型.

obj1 = {

a: 1

}

obj2 = {

a: 1

}

console.log(obj1 === obj2) // false

即使兩個對象的內容完全相同,因為它們的地址不同,因此 obj1 === obj2 會返回 fasle。

所以自己根據深拷貝時遞歸的思想寫了一個比較兩個對象之間內容是否相同的函數。

function compareObject (obj1, obj2) {

// 遞歸終止條件,當 obj1 或 obj2 不是對象時,此時就可以進行判斷了

if (typeof obj1 !== 'object' || typeof obj2 !== 'object') {

if (obj1 === obj2) {

return true

} else if (obj1 !== obj2) {

return false

}

}

// 獲取對象的自由屬性組成的數組

const obj1PropsArr = Object.getOwnPropertyNames(obj1)

const obj2PropsArr = Object.getOwnPropertyNames(obj2)

// 如果數組的長度不相等,那么說明對象屬性的個數都不同,返回 false

if (obj1PropsArr.length !== obj2PropsArr.length) {

return false

}

// 記錄當前 compareObject 的返回值,默認是 true

let status = true

for (key of obj1PropsArr) {

status = compareObject(obj1[key], obj2[key])

// 關鍵代碼,當 status 為 false 時下面就不用再進行判斷了,說明兩個對象的內容并不相同

// 如果沒有下面這條語句,那么只要對象底層的內容是相同的那么就返回 true

if (!status) {

break

}

}

// 每次 compareObject 執行的返回結果

return status

}

測試代碼:

// 判斷兩個對象的內容相等

const obj1 = {

a: 1,

b: {

c: 2,

d: {

e: 4

}

}

}

const obj2 = {

a: 1,

b: {

c: 2,

d: {

e: 4

}

}

}

console.log(compareObject(obj1, obj2)) // true

// 判斷兩個對象的內容不相等

const obj1 = {

a: 1,

b: {

c: 2,

d: {

e: 4

}

}

}

const obj2 = {

a: 1,

b: {

c: 2,

d: {

e: 5

}

}

}

console.log(compareObject(obj1, obj2)) // false

接下來再來強調一下 compareObject 函數中第 23 行這句關鍵代碼,如果沒有這條語句那么最后的返回結果只會取決于兩個對象最底層屬性(最后一次)的比較結果。

if (!status) {

break

}

例如,我將兩個對象變為下面這樣:

const obj1 = {

a: 1,

b: {

c: 3, // 和 obj2 不相等

d: {

e: 4

}

}

}

const obj2 = {

a: 1,

b: {

c: 2,

d: {

e: 4

}

}

}

console.log(compareObject(obj1, obj2)) // true

可以看到最后的返回結果是 true,因為最后的一次比較是 e 屬性,它們的值是相等的。

上面這樣的寫法應該還有一些情況沒有考慮到,對于我的項目需求而言已經足夠了,如果哪位小伙伴發現了希望可以提出來,然后再將它改進一下,非常感謝。

關于找一找教程網

本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。

本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。

[判斷兩個對象的內容是否相等]http://www.zyiz.net/tech/detail-132346.html

總結

以上是生活随笔為你收集整理的判断两个对象是否相等java_判断两个对象的内容是否相等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。