js实现数组去重、判断数组以及对象中的内容是否相同


Posted in Javascript onNovember 29, 2013
/* 
*数组元素去重 
*/ 
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; 
}
Javascript 相关文章推荐
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
jquery 表格排序、实时搜索表格内容(附图)
May 19 Javascript
JavaScript对象学习小结
Sep 02 Javascript
基于JS代码实现导航条弹出式悬浮菜单
Jun 17 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
基于JavaScript实现在新的tab页打开url
Aug 04 Javascript
Node.js连接MongoDB数据库产生的问题
Feb 08 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
浅谈Webpack下多环境配置的思路
Jun 27 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
jquery限定文本框只能输入数字即整数和小数
Nov 29 #Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 #Javascript
js实现的折叠导航示例
Nov 29 #Javascript
javascript特殊用法示例介绍
Nov 29 #Javascript
jquery和ajax的关系详细介绍
Nov 29 #Javascript
js操作table示例(个人心得)
Nov 29 #Javascript
css配合jquery美化 select
Nov 29 #Javascript
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
ECMAScript6--解构
2017/03/30 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
python使用psutil模块获取系统状态
2016/08/27 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
Python如何访问字符串中的值
2020/02/09 Python
python 下载文件的几种方法汇总
2021/01/06 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
小学开学寄语
2014/01/19 职场文书
优秀护士先进事迹
2014/05/08 职场文书
新教师培训心得体会
2014/09/02 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
土地租赁协议书
2015/01/29 职场文书
纪检部部长竞选稿
2015/11/21 职场文书