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事件串连执行多个处理过程的方法
Mar 09 Javascript
Js 获取Gridview选中行的内容操作步骤
Feb 05 Javascript
jquery向上向下取整适合分页查询
Sep 06 Javascript
jquery滚动特效集锦
Jun 03 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
jQuery实现获取table表格第一列值的方法
Mar 01 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
vue-quill-editor富文本编辑器简单使用方法
Sep 21 Javascript
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 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面向对象分析设计的经验原则
2008/09/20 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
js函数般调用正则
2008/04/08 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
python Django批量导入数据
2016/03/25 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
实习生体会的自我评价范文
2013/11/28 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
群众路线个人整改措施
2014/10/24 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技