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截取函数(indexOf,join等)
Sep 01 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
Jul 26 Javascript
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
js控制input框只读实现示例
Jan 20 Javascript
js交换排序 冒泡排序算法(Javascript版)
Oct 04 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
Aug 06 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
Jul 28 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
JS跨域总结
2012/08/30 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
django用户登录验证的完整示例代码
2019/07/21 Python
wxPython实现列表增删改查功能
2019/11/19 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
火车的故事教学反思
2014/02/11 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
python scrapy简单模拟登录的代码分析
2021/07/21 Python