好程式設計師分享JavaScrip陣列去重操作例項小結

好程式設計師IT發表於2019-07-22

好程式設計師分享 JavaScrip 陣列去重操作例項小結 這篇文章主要介紹了 JavaScrip 陣列去重操作 , 結合例項形式總結分析了 javascript 針對陣列的遍歷、判斷、去重等相關操作技巧 , 需要的朋友可以參考下

 

本文例項講述了 JavaScrip陣列去重操作。分享給大家供大家參考,具體如下:

內建的 for-of方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<script>

var   arr=[2,1,1,3, '' , '' , 'e' , 'e' , true , 'true' , true , false , false , 'false' ,undefined, 'undefined' ,undefined, null , 'null' , null ];

function   uniqueUseForOf(array) {

   const temp = []; //一個臨時陣列

   // 傳入值必須存在,且長度小於等於1的時候直接返回陣列

   if   (array && array.length <= 1) {

     return   array;

   } else   {

     //遍歷當前陣列

     for   (let x of array) {

       temp.indexOf(x) === -1 ? temp.push(x) : '' ;

     }

   }

   return   temp;

}

uniqueUseForOf(arr);

console.log(uniqueUseForOf(arr))

</script>

內建的 forEach方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<script>

var   arr=[3,1,1,3, '' , '' , 'e' , 'e' , true , 'true' , true , false , false , 'false' ,undefined, 'undefined' ,undefined, null , 'null' , null ];

function   uniqueUseForEach(array) {

   // 傳入值必須存在,且長度小於等於1的時候直接返回陣列

   if   (array && array.length <= 1) {

     return   array;

   } else   {

     var   temp = []; //一個臨時陣列

     //遍歷當前陣列

     array.forEach( function   (value, index) {

       temp.indexOf(value) == -1 ? temp.push(value) : '' ;

     })

     return   temp;

   }

}

uniqueUseForEach(arr);

console.log(uniqueUseForEach(arr))

</script>

萬能的 for方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<script>

var   arr=[1,1, '' , '' , 'e' , 'e' , true , 'true' , true , false , false , 'false' ,undefined, 'undefined' ,undefined, null , 'null' , null ];

function   uniqueUseFor(array) {

   var   temp = []; //一個臨時陣列

   //遍歷當前陣列

   for   ( var   i = 0, j = array.length; i < j; i++) {

     //很直白,新陣列內判斷是否有這個值,沒有的情況下,就推入該新陣列

     temp.indexOf(array[i]) === -1 ? temp.push(array[i]) : '' ;

   }

   return   temp;

}

uniqueUseFor(arr);

console.log(uniqueUseFor(arr))

</script>

第一種方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<script>

var   arr = [1, 2, 3, 4, 1, 2, 4, 5, 6];

console.log(arr);

Array.prototype.unique = function () {

   var   n = [ this [0]]; //結果陣列

   for ( var   i = 1; i < this .length; i++) //從第二項開始遍歷

   {

     //如果當前陣列的第i項在當前陣列中第一次出現的位置不是i,

     //那麼表示第i項是重複的,忽略掉。否則存入結果陣列

     if ( this .indexOf( this [i]) == i) n.push( this [i]);

   }

   return   n;

};

console.log(arr.unique());

</script>

第二種方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<script>

var   arr = [1,2,3,4,1,2,4,5,6];

console.log(arr);

Array.prototype.unique = function ()

{

   var   n = {},

     r = []; //n為hash表,r為臨時陣列

   for   ( var   i = 0; i < this .length; i++) { //遍歷當前陣列

     if   (!n[ this [i]]) { //如果hash表中沒有當前項

       n[ this [i]] = true ; //存入hash表

       r.push( this [i]); //把當前陣列的當前項push到臨時陣列裡面

     }

   }

   return   r;

};

console.log(arr.unique());

</script>

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2651364/,如需轉載,請註明出處,否則將追究法律責任。

相關文章