溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js數組去重的N種方法(小結)

發布時間:2020-10-25 20:44:35 來源:腳本之家 閱讀:218 作者:tiancai啊呆 欄目:web開發

對于數組去重我們有n種方法可以實現。

es5實現方法

for循環+indexOf
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"]
 console.log(uniqueArr)  //[ 1, 2, 3, 5, '1' ]

排序后去重

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, '1' ]
 console.log(uniqueArr)  //[ 1, '1', 2, 3, 5 ]
利用對象
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: '1' }
  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, '1' ]

es6實現方法

利用Set結構和Array.from
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, '1' ]
 console.log(uniqueArr)  //[ 1, 2, 3, 5, '1' ]
利用Set結構和...
function unique(arr) {
  return [...new Set(arr)]
 }
 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, '1' ]

數組常用方法

  • slice() 用于提取目標數組的一部分,返回一個新數組,原數組不變。
  • concat() 用于多個數組的合并。它將新數組的成員,添加到原數組成員的后部,然后返回一個新數組,原數組不變。
  • reverse() 用于顛倒排列數組元素,返回改變后的數組。注意,該方法將改變原數組。
  • sort() 對數組成員進行排序,默認是按照字典順序排序。排序后,原數組將被改變。
  • push() 用于在數組的末端添加一個或多個元素,并返回添加新元素后的數組長度。注意,該方法會改變原數組。
  • pop() 用于刪除數組的最后一個元素,并返回該元素。注意,該方法會改變原數組。
  • unshift() 用于在數組的第一個位置添加元素,并返回添加新元素后的數組長度。注意,該方法會改變原數組。
  • shift() 用于刪除數組的第一個元素,并返回該元素。注意,該方法會改變原數組。
  • splice() 用于刪除原數組的一部分成員,并可以在刪除的位置添加新的數組成員,返回值是被刪除的元素。注意,該方法會改變原數組。
  • map() 將數組的所有成員依次傳入參數函數,然后把每一次的執行結果組成一個新數組返回。
  • forEach() 與map方法很相似,也是對數組的所有成員依次執行參數函數。但是,forEach方法不返回值,只用來操作數據。
  • filter() 用于過濾數組成員,滿足條件的成員組成一個新數組返回。
  • join() 以指定參數作為分隔符,將所有數組成員連接為一個字符串返回。如果不提供參數,默認用逗號分隔。
  • indexOf() 返回給定元素在數組中第一次出現的位置,如果沒有出現則返回-1。
  • lastIndexOf() 返回給定元素在數組中最后一次出現的位置,如果沒有出現則返回-1。

總結

以上所述是小編給大家介紹的js數組去重的N種方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女