js实现数组去重、判断数组以及对象中的内容是否相同
2013-11-29 00:00
1276 查看
/* *数组元素去重 */ if(typeof Array.prototype.distinct != "function"){ Array.prototype.distinct = function(){ this.sort(); for(var i=0;i<this.length-1;i++){ if($.isPlainObject(this[i]) && $.isPlainObject(this[i+1])){ if(o2o(this[i],this[i+1])){ this.splice(i,1); } }else if($.isArray(this[i]) && $.isArray(this[i+1])){ if(a2a(this[i],this[i+1])){ this.splice(i,1); } }else if(this[i]===this[i+1]){ this.splice(i,1); } } } } /* *比较对象是否相同 */ function o2o(o1,o2){ if(!($.isPlainObject(o1) && $.isPlainObject(o2))){ return false; } var k1k2=[],k1 =[],k2=[]; $.each(o1,function(k,v){ k1.push(k); }); $.each(o2,function(k,v){ k2.push(k); }); if(k1.length != k2.length){ return false; } k1k2 = k1; k1k2 = k1k2.concat(k2); k1k2.distinct(); if(k1.length != k1k2.length || k2.length != k1k2.length){ return false; } var flag=true; $.each(k1k2,function(i,v){ var v1= o1[v]; var v2 =o2[v]; if(typeof v1 != typeof v2){ flag= false; }else{ if($.isPlainObject(v1) && $.isPlainObject(v2)){//recursion flag = o2o(v1,v2); if(!flag){ return false; } }else if($.isArray(v1) && $.isArray(v2)){ flag = a2a(v1,v2); if(!flag){ return false; } }else{ if(v1 !== v2){ flag= false; } } } }); return flag; } /* *比较数组是否完全相同 */ function a2a(a1,a2){ if(!($.isArray(a1) && $.isArray(a2))){ return false; } if(a1.length != a2.length){ return false; } a1.sort(); a2.sort(); for(var i=0;i<a1.length;i++){ if(typeof a1[i] != typeof a2[i]){ return false; } if($.isPlainObject(a1[i]) && $.isPlainObject(a2[i])){ var retVal = o2o(a1[i],a2[i]); if(!retVal){ return false; } }else if($.isArray(a1[i]) && $.isArray(a2[i]) ){//recursion if(!a2a(a1[i],a2[i])){ return false; } }else if(a1[i] !== a2[i]){ return false; } } return true; }
相关文章推荐
- js实现数组去重、判断数组以及对象中的内容是否相同
- js实现数组去重,判断数组、对象中的内容是否相同
- js判断一个对象数组里是否存在某个元素
- [javascript] js中判断对象是否为空的三种实现方法
- json对象与数组以及转换成js对象的简单实现方法
- java 判断对象是否为空或者传入集合对象的是否为空,以及判断数组的长度
- js数组判断提交数据是否存在相同数据
- js 判断图片是否加载完以及实现图片的预下载
- js 判断某个对象是否在数组中
- JS判断元素是否在数组内的实现代码
- js中判断对象是否为空的三种实现方法
- js关于输入内容是否为空,以及输入数字,时间,长短是否正确的判断
- @V@ java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。
- JS判断两个对象内容是否相等的方法示例及开发面试题汇总(图)
- 用jquery实现cookie的操作以及创建js数组和遍历js数组,js对象,jquery.json的使用
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- js判断一个对象数组里是否存在某个元素
- JS判断两个对象相同属性的属性值是否相等
- json对象与数组以及转换成js对象的简单实现方法