欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中如何比較兩個(gè)Json對(duì)象是否相等實(shí)例代碼

 更新時(shí)間:2016年07月13日 15:29:05   作者:什么都看不懂  
這篇文章主要介紹了JS中如何比較兩個(gè)Json對(duì)象是否相等實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

在js前端面試過程中,經(jīng)常會(huì)遇到這樣的筆試題:JS中如何比較兩個(gè)Json對(duì)象是否相等實(shí)例代碼,下面小編抽點(diǎn)時(shí)間給大家整理下,一起看看吧。

1.先準(zhǔn)備三個(gè)工具方法,用于判斷是否是對(duì)象類型,是否是數(shù)組,獲取對(duì)象長(zhǎng)度

function isObj(object) {
return object && typeof (object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";
}
function isArray(object) {
return object && typeof (object) == 'object' && object.constructor == Array;
}
function getLength(object) {
var count = 0;
for (var i in object) count++;
return count;
}

2.準(zhǔn)備兩個(gè)相同或不同的Json對(duì)象

var jsonObjA = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [
{ "Age": "100" },
{
"Box": [
{ "Height": "100" },
{ "Weight": "200" }
]
}
],
"Address": "馬欄山"
}
var jsonObjB = {
"Name": "MyName",
"Company": "MyCompany",
"Infos": [
{ "Age": "100" },
{
"Box": [
{ "Height": "100" },
{ "Weight": "200" }
]
}
],
"Address": "馬欄山二號(hào)"
}

3.主要的代碼

function Compare(objA, objB) {
if (!isObj(objA) || !isObj(objB)) return false; //判斷類型是否正確
if (getLength(objA) != getLength(objB)) return false; //判斷長(zhǎng)度是否一致
return CompareObj(objA, objB, true);//默認(rèn)為true
}
function CompareObj(objA, objB, flag) {
for (var key in objA) {
if (!flag) //跳出整個(gè)循環(huán)
break;
if (!objB.hasOwnProperty(key)) { flag = false; break; }
if (!isArray(objA[key])) { //子級(jí)不是數(shù)組時(shí),比較屬性值
if (objB[key] != objA[key]) { flag = false; break; }
} else {
if (!isArray(objB[key])) { flag = false; break; }
var oA = objA[key], oB = objB[key];
if (oA.length != oB.length) { flag = false; break; }
for (var k in oA) {
if (!flag) //這里跳出循環(huán)是為了不讓遞歸繼續(xù)
break;
flag = CompareObj(oA[k], oB[k], flag);
}
}
}
return flag;
}

4.調(diào)用方法

var result = Compare(jsonObjA, jsonObjB);
console.log(result); // true or false

相關(guān)文章

  • js攔截alert對(duì)話框另類應(yīng)用

    js攔截alert對(duì)話框另類應(yīng)用

    alert對(duì)話框的使用給用戶帶來了很多的方便,而有些時(shí)候不希望讓它存在,接下來介紹如何使用js攔截alert對(duì)話框,感興趣的朋友可以了解下
    2013-01-01
  • javascript+Canvas實(shí)現(xiàn)畫板功能

    javascript+Canvas實(shí)現(xiàn)畫板功能

    這篇文章主要為大家詳細(xì)介紹了javascript+Canvas實(shí)現(xiàn)畫板功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 在線演示常用javascript特效

    在線演示常用javascript特效

    圖形顯示特效鼠標(biāo)驅(qū)動(dòng)圖片變化隨機(jī)顯示banner圖片隨意移動(dòng)圖片定期消失字符連續(xù)消隱文字不停變色JavaScript容錯(cuò)...圖片循環(huán)顯現(xiàn)QQ菜單生成器圖形顯示特效連續(xù)滾動(dòng)的圖片圖片水中倒影純JavaScript時(shí)鐘圖片翻滾導(dǎo)航星星滿天閃爍左側(cè)的極酷...
    2008-04-04
  • Javascript獲取background屬性中url的值

    Javascript獲取background屬性中url的值

    Javascript獲取CSS中屬性值方法有很多,今天工作的時(shí)候遇到了一個(gè)問題是需要利用Javascript獲取css中background-img屬性u(píng)rl的值,通過查閱網(wǎng)站的資料找到了解決方法,現(xiàn)在將方法分享給大家,有需要的朋友們們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • 兩種方法實(shí)現(xiàn)文本框輸入內(nèi)容提示消失

    兩種方法實(shí)現(xiàn)文本框輸入內(nèi)容提示消失

    第一種方法:基于HTML5 input標(biāo)簽的新特性 - placeholder 。另外,x-webkit-speech 屬性可以實(shí)現(xiàn)語音輸入功能;第二種方法: 用span模擬,定位span,借助JS鍵盤事件判斷輸入,確定span里的內(nèi)容顯示隱藏
    2013-03-03
  • 微信小程序 textarea 層級(jí)過高問題簡(jiǎn)單解決方案

    微信小程序 textarea 層級(jí)過高問題簡(jiǎn)單解決方案

    這篇文章主要介紹了微信小程序 textarea 層級(jí)過高問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 如何在JavaScript中謹(jǐn)慎使用代碼注釋

    如何在JavaScript中謹(jǐn)慎使用代碼注釋

    這篇文章主要介紹了如何在JavaScript中謹(jǐn)慎使用代碼注釋,必要的注釋可以闡明實(shí)現(xiàn)細(xì)節(jié)和設(shè)計(jì)意圖,以此節(jié)約自己和別人的時(shí)間。 然而很多時(shí)候注釋起的作用卻適得其反,,需要的朋友可以參考下
    2019-06-06
  • js判斷在哪個(gè)瀏覽器打開項(xiàng)目的方法

    js判斷在哪個(gè)瀏覽器打開項(xiàng)目的方法

    這篇文章主要介紹了js判斷在哪個(gè)瀏覽器打開項(xiàng)目的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • JS排序之冒泡排序詳解

    JS排序之冒泡排序詳解

    這篇文章主要為大家詳細(xì)介紹了JS冒泡排序的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • javascript下IE與FF兼容函數(shù)收集

    javascript下IE與FF兼容函數(shù)收集

    在我們平時(shí)寫js的過程中,有可能會(huì)考慮到盡量兼容瀏覽器的兼容性,下面是兩個(gè)常用的方法
    2008-09-09

最新評(píng)論