首頁 >web前端 >js教程 >陣列的常用方法有哪些,如何給陣列去重(附程式碼)

陣列的常用方法有哪些,如何給陣列去重(附程式碼)

yulia
yulia原創
2018-09-12 16:23:441641瀏覽

陣列是JavaScript的重要組成部分,不管是工作還是求職面試都會涉及數組,例如經典問題:怎麼給數組去重。今天就跟大家聊聊,陣列的常用方法有哪些,以及多種方式讓陣列去重。

一、陣列常用方法

slice()  用來擷取目標陣列的一部分,傳回一個新數組,原始數組不變。

concat()  用於多個陣列的合併。它將新數組的成員,加到原始數組成員的後部,然後傳回一個新數組,原始數組不變。

reverse()   用來顛倒排列陣列元素,傳回改變後的陣列。注意,該方法將改變原始數組。

sort()   將陣列成員排序,預設為依照字典順序排序。排序後,原始數組將會改變。

push() 用於在陣列的末端新增一個或多個元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。

pop()  用來刪除陣列的最後一個元素,並傳回該元素。注意,該方法會改變原始數組。

unshift()  用於在陣列的第一個位置新增元素,並傳回新增元素後的陣列長度。注意,該方法會改變原始數組。

shift()   用來刪除陣列的第一個元素,並傳回該元素。注意,該方法會改變原始數組。

splice()  用來刪除原始陣列的一部分成員,並且可以在刪除的位置新增新的陣列成員,傳回值是被刪除的元素。注意,該方法會改變原始數組。

map()  將陣列的所有成員依序傳入參數函數,然後把每一次的執行結果組成一個新陣列傳回。

forEach()  與map方法很相似,也是對陣列的所有成員依序執行參數函數。但是,forEach方法不傳回值,只用來操作資料。

filter()  用來過濾陣列成員,滿足條件的成員組成一個新陣列傳回。

join()  以指定參數為分隔符,將所有陣列成員連接為一個字串傳回。如果不提供參數,預設用逗號分隔。

indexOf()  傳回給定元素在陣列中第一次出現的位置,如果沒有出現則傳回-1。

lastIndexOf()  傳回給定元素在陣列中最後一次出現的位置,若沒有出現則傳回-1。

二、多種方式給陣列去重

1、利用物件

function unique(arr) {    var uniqueArr = [],      
 len = arr.length    for (var i = 0; i < len; i++) {      
 if (uniqueArr.indexOf(arr[i]) == -1) {         
 uniqueArr.push(arr[i])       }    
  }    return uniqueArr   }  
  var arr = [1, 2, 3, 1, 5, "1"]  
  var uniqueArr = unique(arr)  console.log(arr)   
   //[1, 2, 3, 1, 5, "1"]   c
   onsole.log(uniqueArr)   //[ 1, 2, 3, 5, &#39;1&#39; ]

2、排序後去重

function unique(arr) {    
var uniqueArr = [],       
sortArr = arr.concat().sort(),      
 len = sortArr.length,      
  prev    for (var i = 0; i < len; i++) {     
   if (!i || prev !== sortArr[i]) {       
     uniqueArr.push(sortArr[i])       }      
      prev = sortArr[i]     }    return uniqueArr   
      }  var arr = [1, 2, 3, 1, 5, "1"]  
      var uniqueArr = unique(arr)  console.log(arr)    
      //[ 1, 2, 3, 1, 5, &#39;1&#39; ]   console.log(uniqueArr)   //[ 1, &#39;1&#39;, 2, 3, 5 ]

3、for迴圈indexOf

 function unique(arr) {   
  var uniqueArr = [],      
   obj = {},       
   len = arr.length    
   for (var i = 0; i < len; i++) {      
    obj[typeof arr[i] + arr[i]] = arr[i]     }  
      for (var i in obj) {       
      uniqueArr.push(obj[i])     }    
      console.log(obj)   
      //{ number1: 1, number2: 2, number3: 3, number5: 5, string1: &#39;1&#39; }    
       return uniqueArr   }  
       var arr = [1, 2, 3, 1, 5, "1"]  
       var uniqueArr = unique(arr)  console.log(arr)   
        // [1, 2, 3, 1, 5, "1"]   console.log(uniqueArr)   //[ 1, 2, 3, 5, &#39;1&#39; ]

4、es6實作方法

function unique(arr) {  
  return Array.from(new Set(arr))   } 
   var arr = [1, 2, 3, 1, 5, "1"] 
    var uniqueArr = unique(arr)  console.log(arr)    
     //[ 1, 2, 3, 1, 5, &#39;1&#39; ]   console.log(uniqueArr)    //[ 1, 2, 3, 5, &#39;1&#39; ]

以上是陣列的常用方法有哪些,如何給陣列去重(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn