摘要:判斷兩個(gè)對(duì)象的值是否相等源代碼如果數(shù)據(jù)類(lèi)型不相等,則返回如果數(shù)據(jù)類(lèi)型相等,再根據(jù)不同數(shù)據(jù)類(lèi)型分別判斷樣例
判斷兩個(gè)對(duì)象的值是否相等
源代碼
function isEqual (a, b) { const classNameA = toString.call(a) const classNameB = toString.call(b) // 如果數(shù)據(jù)類(lèi)型不相等,則返回false if (classNameA !== classNameB) { return false } else { // 如果數(shù)據(jù)類(lèi)型相等,再根據(jù)不同數(shù)據(jù)類(lèi)型分別判斷 if (classNameA === "[object Object]") { for (let key in a) { if (!isEqual(a[key], b[key])) return false } for (let key in b) { if (!isEqual(a[key], b[key])) return false } return true } else if (classNameA === "[object Array]") { if (a.length !== b.length) { return false } else { for (let i = 0, len = a.length; i < len; i++) { if (!isEqual(a[i], b[i])) return false } return true } } else if (classNameA === "[object Function]") { return a.toString() === b.toString() } else { return Object.is(a, b) } } }
樣例
const a = { arr: [1, true, {a: 6, arr: [9, 0, 6, [5, 9]]}], d: 0, obj: { d: 9, arr: [5000]}, e: ()=>{}, f: [0] } const b = { arr: [1, true, {a: 6, arr: [9, 0, 6, [5, 9]]}], d: 0, obj: { d: 9, arr: [5000]}, e: ()=>{}, f: [0] } console.log(isEqual(a, b))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/94830.html
不同數(shù)據(jù)類(lèi)型做比較的時(shí)候,都需要進(jìn)行數(shù)據(jù)類(lèi)型的轉(zhuǎn)換!本文介紹常見(jiàn)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的方法,相等和嚴(yán)格相等的判斷規(guī)律 一、其他類(lèi)型轉(zhuǎn)換成布爾類(lèi)型 1、使用場(chǎng)景: 對(duì)于括號(hào)里的表達(dá)式,會(huì)被強(qiáng)制轉(zhuǎn)換為布爾類(lèi)型 if () { console.log(empty) } 2、轉(zhuǎn)換規(guī)則 類(lèi)型 結(jié)果 Undefined false Null false Number +0, ?0, 或者 N...
摘要:通常在轉(zhuǎn)換不同數(shù)據(jù)類(lèi)型時(shí),相等和不相等會(huì)遵循以下規(guī)則若有一個(gè)操作數(shù)是布爾值,則比較前會(huì)將布爾值轉(zhuǎn)換為數(shù)值轉(zhuǎn)為,轉(zhuǎn)為。 本文是 重溫基礎(chǔ) 系列文章的第十八篇。今日感受:優(yōu)化自己的代碼,也是很愉快的事情。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】1-14篇 【重溫基礎(chǔ)】15.JS對(duì)象介紹 【重溫基礎(chǔ)】16.JSON對(duì)象介紹 【重溫基礎(chǔ)...
摘要:同一類(lèi)的復(fù)合類(lèi)型值兩個(gè)復(fù)合類(lèi)型對(duì)象數(shù)組函數(shù)的數(shù)據(jù)比較時(shí),不是比較它們的值是否相等,而是比較它們是否指向同一個(gè)對(duì)象。寬松相等雙等號(hào)將執(zhí)行類(lèi)型轉(zhuǎn)換原始類(lèi)型的值原始類(lèi)型的數(shù)據(jù)會(huì)轉(zhuǎn)換成數(shù)值類(lèi)型再進(jìn)行比較。 事件這塊知識(shí)點(diǎn)雖然是老生長(zhǎng)談的,但對(duì)于我來(lái)說(shuō)多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會(huì)長(zhǎng)篇大論,只會(huì)挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...
摘要:同一類(lèi)的復(fù)合類(lèi)型值兩個(gè)復(fù)合類(lèi)型對(duì)象數(shù)組函數(shù)的數(shù)據(jù)比較時(shí),不是比較它們的值是否相等,而是比較它們是否指向同一個(gè)對(duì)象。寬松相等雙等號(hào)將執(zhí)行類(lèi)型轉(zhuǎn)換原始類(lèi)型的值原始類(lèi)型的數(shù)據(jù)會(huì)轉(zhuǎn)換成數(shù)值類(lèi)型再進(jìn)行比較。 事件這塊知識(shí)點(diǎn)雖然是老生長(zhǎng)談的,但對(duì)于我來(lái)說(shuō)多多整理,多多感悟,溫故知新,每次看看這塊都有不同的收獲.(在這里我不會(huì)長(zhǎng)篇大論,只會(huì)挑重點(diǎn);具體的小伙伴們自行查找)參考:https://dev...
閱讀 1318·2021-09-22 15:43
閱讀 2526·2021-09-22 15:32
閱讀 4761·2021-09-22 15:11
閱讀 2460·2019-08-30 15:55
閱讀 2802·2019-08-30 15:54
閱讀 1111·2019-08-30 15:44
閱讀 1299·2019-08-29 13:26
閱讀 935·2019-08-29 12:54