经常要判断两个对象的值是否相等 ,写了个方法用来比较,和对象深层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;
}
}
}
分享到:
相关推荐
本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 ...
想判断2个js对象,是不是所有完全相同在表单页面应用是很常见的,接下来分享一段判断代码,感兴趣的你可以参考下哈,希望可以帮助到你
我们知道,如果两个对象即使内容,JavaScript也会判断它们不相等。但是有时候,我们仅仅需要判断两个对象的内容是否相等。那么我们应该如何做到且考虑周全呢?比如说0和-0,null和undefined,是不相等的,NaN和NaN...
这篇文章主要介绍了基于JavaScript判断两个对象内容是否相等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ES6中有一个方法判断两个对象是否相等,这个方法...
8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...
主要介绍了JS判断两个数组或对象是否相同的方法,结合实例形式分析了javascript针对简单数组与对象进行判断的相关操作技巧,需要的朋友可以参考下
目前JavaScript没有内置的操作符判断对象的内容是否相同。 但是惯性思维让人以为数组也是值,是可以比较的。 如果要比较数组是否相等,就只能遍历数组元素比较。 在网上流传很普遍的一种做法是将数组转换成字符串: ...
2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 2.8:form文本域的通用校验函数
此模块支持所有类型的比较,包括Function,RegExp,Date,null,undefined和NaN值。对象和数组是递归遍历的。
javascript如何判断数组内元素是否重复的方法集锦
2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 2.8:form文本域的通用校验...
8) 关闭窗口用window.close()方法,窗口关闭后,代表它的Window对象可能还生存,可用closed属性进行判断它是否已经被关闭。 9) 控制窗口几何大小可用moveTo()、moveBy()、resizeTo()、resizeBy()。滚动可用scrollTo...
1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...
通过默认,React将对两个对象执行JavaScript对象引用比较,否则称为浅对象比较,这将导致对fp-ts数据类型的“不变”值进行额外的重新渲染。 例如:使用fp-ts类型,例如Option,其基础数据结构是{_tag:“ Some”,...
1.16 判断页面是否添加了W3C声明 1.17 屏蔽网页中的脚本 1.18 以频道模式打开页面 1.19 自动识别网页类型 1.20 在网页中动态添加Script脚本 1.21 用JavaScript随机修改页面的标题 1.22 判断网页加载完毕 1.23 嵌入...
主要介绍了js数组相减,结合简单示例形式分析了JavaScript删除a数组所有与b数组相同元素相关个遍历、判断、删除等相关操作技巧,需要的朋友可以参考下