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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
jQuery实现锚点scoll效果实例分析
Mar 10 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
微信小程序删除处理详解
Aug 16 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
vue数据初始化initState的实例详解
Apr 11 Javascript
微信小程序实现电子签名并导出图片
May 27 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
收音机史话 - 1960年代前后的DIY
2021/03/02 无线电
4.与数据库的连接
2006/10/09 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
js控制的遮罩层实例介绍
2013/05/29 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
详解vue-router基本使用
2017/04/18 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python实现在pickling的时候压缩的方法
2014/09/25 Python
详细介绍Python中的偏函数
2015/04/27 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
金融专业推荐信
2013/11/14 职场文书
社团活动策划书范文
2014/01/09 职场文书
春节晚会主持词
2014/03/24 职场文书
新学期教师寄语
2014/04/02 职场文书
班干部演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript