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 相关文章推荐
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 Javascript
可以用来调试JavaScript错误的解决方案
Aug 07 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
js中 关于undefined和null的区别介绍
Apr 16 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
基于jQuery实现动态数字展示效果
Aug 12 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
微信小程序抽奖组件的使用步骤
Jan 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--用万网的接口实现域名查询功能
2012/12/13 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
PHP云打印类完整示例
2016/10/15 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
jQuery 源码分析笔记(3) Deferred机制
2011/06/19 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
js返回顶部实例分享
2016/12/21 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
实现vuex原理的示例
2020/10/21 Javascript
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
Python目录和文件处理总结详解
2019/09/02 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Python如何绘制日历图和热力图
2020/08/07 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
FOREO官方网站:LUNA露娜洁面仪
2016/11/28 全球购物
德国旅游网站:weg.de
2018/06/03 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
应届毕业生求职信
2013/11/30 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
python中sys模块的介绍与实例
2021/04/17 Python
分享7个 Python 实战项目练习
2022/03/03 Python
MySQL派生表联表查询实战过程
2022/03/20 MySQL