经常要判断两个对象的值是否相等 ,写了个方法用来比较,和对象深层copy的思路有点像,都是将对象进行类型判断 然后操作 。记录下。
/*
*typeof 取值为object的 除了null 其它都不等
*/
function compareobj(A,B){
if(A instanceof Array){
if(!(B instanceof Array)){
return false;
}
var aLen = A.length,
bLen = B.length;
if(aLen != bLen){
return false;
}
var isEqual = true,num = 0;
for(var i = 0;i < aLen;i++){
if(A[i]!=B[i] && typeof A[i]=='object' && typeof B[i]=='object'){
isEqual = arguments.callee.apply(null,[A[i],B[i]]);
//isEqual = compareobj(A[i],B[i]);
}else{
isEqual = A[i]===B[i];
}
if(isEqual){
num++;
}
}
if(num != aLen){
return false;
}else{
return true;
}
}else if(A instanceof Date){
if(!(B instanceof Date)){
return false;
}else{
return A.getTime() == B.getTime();
}
}else if(A instanceof Object){
if((B instanceof Array) || (B instanceof Date) || !(B instanceof Object)){
return false;
}else{
var aLen=bLen=0;
for(var i in A){
aLen++;
}
for(var i in B){
bLen++;
}
if(aLen != bLen){
return false;
}
var isEqual = true,num = 0;
for(var i in A){
if(typeof A[i] == 'object' && typeof B[i] == 'object' && A[i]!=B[i]){
isEqual = arguments.callee.apply(null,[A[i],B[i]]);
// isEqual = compareobj(A[i],B[i]);
}else{
isEqual = A[i]===B[i];
}
if(isEqual){
num++;
}
}
if(num != aLen){
return false;
}else{
return true;
}
}
}else{
if(B instanceof Object){
return false;
}else{
return A===B;
}
}
}
分享到:
相关推荐
在JavaScript中判断两个字符串是否相等是编程基础中的重要内容,尤其对于初学者来说,理解字符串相等性的判断方法对于编写有效的代码至关重要。首先,要了解JavaScript提供了两种相等性运算符:“==”和“===”。这...
在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...
例如在表单验证、数据存储和查询等场景下,判断对象是否相等可以帮助我们有效地管理数据状态、优化用户界面表现。通过上述方法,我们能够根据对象的属性值以及属性类型,进行深层次的比较,从而做出准确的判断。这...
在JavaScript开发过程中,有时我们需要深度比较两个值是否完全相等,包括它们的属性、元素以及嵌套的对象和数组。这通常在验证数据状态或者比较复杂结构时非常有用。标题提到的"一个微小的247B的工具类用于深度判断...
本js代码通过对js对象进行各方面的比较来判断两个对象是否相等 cmp = function( x, y ) { // If both x and y are null or undefined and exactly the same if ( x === y ) { return true; } // If they are not ...
这个函数首先检查两个对象是否严格相等,其次判断两个对象是否都是对象类型,并且具有相同的构造函数。然后,它会遍历两个对象的所有自有属性,对每个属性递归地调用`cmp`函数比较属性值。对于对象或数组类型的属性...
在JavaScript中,判断两个对象的内容是否相等是一个常见的需求,但JavaScript本身的相等运算符(`==` 和 `===`)并不能满足这种需求,因为它们只检查引用的相等性,而不是值的相等性。当涉及到复杂的数据结构,如...
JSON对象在JavaScript中就是普通的对象,比较两个对象是否相等,就是比较两个对象的属性值是否完全相同。由于对象是引用类型,不能直接使用“==”或“===”来比较两个对象是否相等。这是因为“==”和“===”操作符...
这篇文章主要介绍了基于JavaScript判断两个对象内容是否相等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ES6中有一个方法判断两个对象是否相等,这个方法...
这种方法在判断对象是否属于特定类型时非常有效,但当涉及到跨框架(iframe)的情况时,由于不同的框架创建的数组可能不共享相同的原型链,因此`instanceof`可能会失效。 3. `constructor`属性: 每个JavaScript...
在JavaScript(JS)中,判断两个数组是否完全相同是一个常见的需求,这可能涉及到对对象数组或字符串数组的比较。在编程实践中,数组的相同性不仅仅是元素数量的匹配,还需要考虑元素的顺序和值的精确匹配。下面我们...
8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...
在JavaScript编程语言中,相等运算符(`==`)与等同运算符(`===`)是两个非常重要的概念,它们用于判断两个值是否相等,但它们的比较方式和逻辑有所不同,这一点对于理解JavaScript的数据类型转换和比较规则至关...
通过比较`getFullYear`和`getMonth`方法返回的值,我们可以判断两个日期是否处于相同的年份和月份。 ### 总结 以上三个函数提供了JavaScript中处理日期的基本能力:比较日期大小、验证日期格式以及判断两个日期...
JavaScript中的`RegExp`对象用于处理正则表达式,`test()`或`exec()`方法可以用于验证字符串是否符合特定的模式。例如,验证一个字符串是否为数字,可以使用`/^\d+$/.test(inputValue)`。 3. **判断GridView是否有...