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 相关文章推荐
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
javascript开发中因空格引发的错误
Nov 08 Javascript
基于jquery的时间段实现代码
Aug 02 Javascript
JavaScript中的DSL元编程介绍
Mar 15 Javascript
jquery预加载图片的方法
May 27 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
Dec 25 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
Vue父子模版传值及组件传值的三种方法
Nov 27 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
Vue.js watch监视属性知识点总结
Nov 11 Javascript
vue实例的选项总结
Jun 09 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
ajax php 实现写入数据库
2009/09/02 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Vue的Options用法说明
2020/08/14 Javascript
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
python调用自定义函数的实例操作
2019/06/26 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
结构工程研究生求职信
2013/10/13 职场文书
大二学生职业生涯规划书
2014/02/05 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
亮剑观后感600字
2015/06/05 职场文书
大学学生会竞选稿
2015/11/19 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL