1+ <!DOCTYPE html>
2+ < html >
3+ < head lang ="en ">
4+ < meta charset ="UTF-8 ">
5+ < title > 数组去重|Demos 代码演示、代码片段 - 读你 | 这世间唯有梦想和好姑娘不可辜负!</ title >
6+ < meta name ="Keyword " content ="代码演示,代码片段,HTML5,CSS3,JavaScript,jQuery,Bootstrap ">
7+ < meta name ="Author " content ="dunizb ">
8+ < meta name ="website " content ="http://www.mybry.com ">
9+ < meta name ="Description " content ="Demos 代码演示、代码片段 - 读你 | 这世间唯有梦想和好姑娘不可辜负! ">
10+ < link type ="image/x-icon " rel ="shortcut icon " href ="../image/favicon.ico "/>
11+ </ head >
12+ < body >
13+
14+ < h1 > 数组去重</ h1 >
15+ < script type ="text/javascript ">
16+ var arr = [ "c" , "a" , "z" , "a" , "x" , "a" ] ;
17+ /***********************
18+ * 1.对象轮询法
19+ * 定义一个对象o 保存结果,遍历需要去重的数组,如果该元素已经存在在 o 中了则+1,否则=1,
20+ * 最后得到的o对象:{c: 1, a: 3, z: 1, x: 1},就是已经去重的数组的数据了,
21+ * 进一步,这个方法顺便还得到了重复次数最多的数据
22+ * ********************/
23+ function unique ( array ) {
24+ var o = { } ;
25+ for ( var i = 0 ; i < array . length ; i ++ ) {
26+ var item = array [ i ] ;
27+ //判断字典中是否已经存在该值
28+ //如果不存在 = 1
29+ //如果存在 + 1
30+ if ( o [ item ] ) {
31+ o [ item ] ++ ;
32+ } else {
33+ o [ item ] = 1 ;
34+ }
35+ }
36+ // 删掉原来的数组
37+ array = null ;
38+ // 去重后的新数组
39+ var newArray = [ ] ;
40+ for ( var key in o ) {
41+ newArray . push ( key ) ;
42+ }
43+ return newArray ;
44+ }
45+ //console.log(unique(arr));
46+
47+ /***********************
48+ * 2.数组轮询法
49+ * 定义一个变量数组 res 保存结果,遍历需要去重的数组,如果该元素已经存在在 res 中了,则说明是重复的元素,
50+ * 如果没有,则放入 res 中。本质上跟方法一一样
51+ * 如果不考虑浏览器兼容,我们可以用 ES5 提供的 Array.prototype.indexOf 方法来简化代码
52+ * ********************/
53+ function unique2 ( array ) {
54+ var res = [ ] ;
55+
56+ for ( var i = 0 ; i < array . length ; i ++ ) {
57+ var item = array [ i ] ;
58+ for ( var j = 0 ; j < res . length ; j ++ ) {
59+ if ( res [ j ] === item ) {
60+ break ;
61+ }
62+ }
63+ if ( j === res . length ) {
64+ res . push ( item ) ;
65+ }
66+ }
67+ return res ;
68+ }
69+ //console.log(unique2(arr));
70+
71+ function unique3 ( array ) {
72+ var tempArray = [ ] ;
73+ for ( var i = 0 ; i < array . length ; i ++ ) {
74+ if ( tempArray . indexOf ( array [ i ] ) == - 1 ) {
75+ tempArray . push ( array [ i ] ) ;
76+ }
77+ }
78+ return tempArray ;
79+ }
80+ </ script >
81+ </ body >
82+ </ html >
0 commit comments