


Detailed code examples of how to determine whether objects are equal in javascript
We know that if two objects have even contents, JavaScript will judge that they are not equal. But sometimes, we just need to determine whether the contents of two objects are equal. So how should we do this and be considerate? For example, 0 and -0, null and undefined are not equal, and NaN and NaN are not equal by default. I wrote an isEqual method, taking many aspects into consideration. The code is as follows:
<!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; } } //test var 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);//true console.log(state2);//false var state3=isEqual(null,undefined); console.log(state3);//false var state4=isEqual(NaN,NaN); console.log(state4);//true var arr1=[1,2,3]; var arr2=[1,2,3]; var arr3=[1,23]; var state5=isEqual(arr1,arr2); console.log(state5);//true var state6=isEqual(arr1,arr3); console.log(state6);//false </script> </html>
The running effect diagram is as follows:
The above is the detailed content of Detailed code examples of how to determine whether objects are equal in javascript. For more information, please follow other related articles on the PHP Chinese website!

JavaandJavaScriptaredistinctlanguages:Javaisusedforenterpriseandmobileapps,whileJavaScriptisforinteractivewebpages.1)Javaiscompiled,staticallytyped,andrunsonJVM.2)JavaScriptisinterpreted,dynamicallytyped,andrunsinbrowsersorNode.js.3)JavausesOOPwithcl

JavaScript core data types are consistent in browsers and Node.js, but are handled differently from the extra types. 1) The global object is window in the browser and global in Node.js. 2) Node.js' unique Buffer object, used to process binary data. 3) There are also differences in performance and time processing, and the code needs to be adjusted according to the environment.

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

The main difference between Python and JavaScript is the type system and application scenarios. 1. Python uses dynamic types, suitable for scientific computing and data analysis. 2. JavaScript adopts weak types and is widely used in front-end and full-stack development. The two have their own advantages in asynchronous programming and performance optimization, and should be decided according to project requirements when choosing.

Whether to choose Python or JavaScript depends on the project type: 1) Choose Python for data science and automation tasks; 2) Choose JavaScript for front-end and full-stack development. Python is favored for its powerful library in data processing and automation, while JavaScript is indispensable for its advantages in web interaction and full-stack development.

Python and JavaScript each have their own advantages, and the choice depends on project needs and personal preferences. 1. Python is easy to learn, with concise syntax, suitable for data science and back-end development, but has a slow execution speed. 2. JavaScript is everywhere in front-end development and has strong asynchronous programming capabilities. Node.js makes it suitable for full-stack development, but the syntax may be complex and error-prone.

JavaScriptisnotbuiltonCorC ;it'saninterpretedlanguagethatrunsonenginesoftenwritteninC .1)JavaScriptwasdesignedasalightweight,interpretedlanguageforwebbrowsers.2)EnginesevolvedfromsimpleinterpreterstoJITcompilers,typicallyinC ,improvingperformance.

JavaScript can be used for front-end and back-end development. The front-end enhances the user experience through DOM operations, and the back-end handles server tasks through Node.js. 1. Front-end example: Change the content of the web page text. 2. Backend example: Create a Node.js server.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

SublimeText3 Chinese version
Chinese version, very easy to use

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
