国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS判斷兩個對象內容是否相等的方法示例

2019-11-19 16:52:22
字體:
來源:轉載
供稿:網友

本文實例講述了JS判斷兩個對象內容是否相等的方法。分享給大家供大家參考,具體如下:

我們知道,如果兩個對象即使內容,JavaScript也會判斷它們不相等。但是有時候,我們僅僅需要判斷兩個對象的內容是否相等。那么我們應該如何做到且考慮周全呢?比如說0和-0,null和undefined,是不相等的,NaN和NaN默認是不相等的。我寫了一個isEqual方法,考慮到了諸多方面,代碼如下:

<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <title></title>  </head>  <body>  </body><script type="text/javascript">//isEqual:判斷兩個對象是否鍵值對應相等function isEqual(a,b){  //如果a和b本來就全等  if(a===b){    //判斷是否為0和-0    return a !== 0 || 1/a ===1/b;  }  //判斷是否為null和undefined  if(a==null||b==null){    return a===b;  }  //接下來判斷a和b的數據類型  var classNameA=toString.call(a),    classNameB=toString.call(b);  //如果數據類型不相等,則返回false  if(classNameA !== classNameB){    return false;  }  //如果數據類型相等,再根據不同數據類型分別判斷  switch(classNameA){    case '[object RegExp]':    case '[object String]':    //進行字符串轉換比較    return '' + a ==='' + b;    case '[object Number]':    //進行數字轉換比較,判斷是否為NaN    if(+a !== +a){      return +b !== +b;    }    //判斷是否為0或-0    return +a === 0?1/ +a === 1/b : +a === +b;    case '[object Date]':    case '[object Boolean]':    return +a === +b;  }  //如果是對象類型  if(classNameA == '[object Object]'){    //獲取a和b的屬性長度    var propsA = Object.getOwnPropertyNames(a),      propsB = Object.getOwnPropertyNames(b);    if(propsA.length != propsB.length){      return false;    }    for(var i=0;i<propsA.length;i++){      var propName=propsA[i];      //如果對應屬性對應值不相等,則返回false      if(a[propName] !== b[propName]){        return false;      }    }    return true;  }  //如果是數組類型  if(classNameA == '[object Array]'){    if(a.toString() == b.toString()){      return true;    }    return false;  }}//testvar obj1={name:"liu",age:22};var obj2={name:"liu",age:22};var obj3={name:"liu",age:33};var state1=isEqual(obj1,obj2);var state2=isEqual(obj1,obj3);console.log(state1);//trueconsole.log(state2);//falsevar state3=isEqual(null,undefined);console.log(state3);//falsevar state4=isEqual(NaN,NaN);console.log(state4);//truevar arr1=[1,2,3];var arr2=[1,2,3];var arr3=[1,23];var state5=isEqual(arr1,arr2);console.log(state5);//truevar state6=isEqual(arr1,arr3);console.log(state6);//false</script></html>

運行效果圖如下:

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript中json操作技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁波市| 仁化县| 慈利县| 龙山县| 大丰市| 汾阳市| 武宣县| 西乌珠穆沁旗| 永靖县| 岳池县| 陈巴尔虎旗| 白城市| 旅游| 塔城市| 新巴尔虎左旗| 乳山市| 西乌珠穆沁旗| 九江市| 泰宁县| 左权县| 亚东县| 洞头县| 从江县| 肥西县| 左云县| 凭祥市| 博白县| 崇礼县| 禹州市| 临高县| 获嘉县| 沙坪坝区| 鄱阳县| 江源县| 白河县| 龙里县| 团风县| 呼和浩特市| 云和县| 神农架林区| 腾冲县|