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 相关文章推荐
js鼠标左右键 键盘值小结
Jun 11 Javascript
js 判断checkbox是否选中的实现代码
Nov 23 Javascript
关于js获取radio和select的属性并控制的代码
May 12 Javascript
js与css实现弹出层覆盖整个页面的方法
Dec 13 Javascript
jQuery选择器源码解读(二):select方法
Mar 31 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
JavaScript获取用户所在城市及地理位置
Apr 21 Javascript
Element-UI踩坑之Pagination组件的使用
Oct 29 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 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中养成7个面向对象的好习惯
2010/07/17 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Add a Table to a Word Document
2007/06/15 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
python 读取串口数据的示例
2020/11/09 Python
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
期中考试复习计划
2015/01/19 职场文书
初中语文教学随笔
2015/08/15 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python