国产成在线人视频免费视频-国产成综合-国产床上视频-国产大臿蕉香蕉大视频女-国产大尺度pr社18福利在线

JS數組去重的幾種方法

2021-9-27    前端達人

數組去重

1 雙層for循環(類似冒泡排序的雙層循環寫法)

var arr = [2,3,4,2,34,21,1,12,3,4,1] for(var i =0;i<arr.length;i++){ //第一層:每次循環拿到arr中一個元素 for(var j=i+1;j<arr.length;j++){ //第二層:每次拿到的元素再和每次拿到的元素后邊的元素依次進行比對(因為第一個要從第二個開始比,第二個要從第三個比以此類推,所以這里的j應比i大1為j=i+1) if(arr[i] === arr[j]){ //如果相同就刪除后邊的元素 arr.splice(j,1) } } } //arr:[1, 2, 3, 4, 12, 21, 34] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2 循環和indexof、循環和includes

創建新數組,循環舊數組,看每次循環的元素是否存在于新數組中沒有就把當前元素添加到新數組中

//indexof var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr2 = [] arr.forEach((e)=>{ if(arr2.indexOf(e)==-1){ arr2.push(e) } }) console.log(arr2) //arr2:[1, 2, 3, 4, 12, 21, 34] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
//includes var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr2 = [] arr.forEach((e)=>{ if(!arr2.includes(e)){ arr2.push(e) } }) console.log(arr2) //arr2:[1, 2, 3, 4, 12, 21, 34] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3 利用對象屬性不能重復去重

var arr = [2,3,4,2,34,21,1,12,3,4,1] var obj = {}; arr.forEach((e,i)=>{ obj[arr[i]] = "abc"; }); var arr2=Object.keys(obj) console.log(arr2) //arr2:["1", "2", "3", "4", "12", "21", "34"] var arr3 = arr2.map(e => ~~e ) //arr3:[1, 2, 3, 4, 12, 21, 34] //注意這種方法不僅給數組重新排列而且還改變了數組中元素的類型 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

~是js里的按位取反操作符,~~就是執行兩次按位取反,其實就是保持原值,但是注意雖然是原值,但是對布爾型變量執行這個操作,會轉化成相應的數值型變量,也就是 ~~true === 1,~~false === 0。

4 ES6 Set

ES6 提供了新的數據結構 Set。它類似于數組,但是成員的值都是唯一的,沒有重復的值。

var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr1 = [...new Set(arr)] console.log(arr1) //arr1:[1, 2, 3, 4, 12, 21, 34] 
  • 1
  • 2
  • 3
  • 4

5 ES6 Array. prototype.filter()

注:indexOf在數組中找元素的時候,碰到符合條件的第一個就會把它的下標返回

var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr2 = arr.filter((e,i)=>{ //看每次循環的元素在數組中出現的第一個下標位置(indexOf返回的位置),和每次循環的元素的下標(filter循環每次的i)是否一致,一致就說明他就是第一個符合條件,不會被過濾掉。 return arr.indexOf(e)==i; }) console.log(arr2) //arr2:[1, 2, 3, 4, 12, 21, 34] 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6 ES6 Array. prototype.reduce()

var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr2 = arr.reduce((pre,e)=>{ //這里當然也可以用indexOf來判斷是否存在 pre.includes(e)?pre:pre.push(e); return pre },[]) console.log(arr2) //arr2:[1, 2, 3, 4, 12, 21, 34]

藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉自:csdn 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

藍藍設計www.z1277.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.z1277.cn

存檔

主站蜘蛛池模板: 亚洲日本中文字幕在线2022 | 国产精品福利久久2020 | 日韩一区二区三区在线观看 | 婷婷伊人久久 | 日韩视频免费看 | 免费a级黄色毛片 | 国产精品第八页 | 国产成人精品免费视频 | 免费观看日本污污ww网站一区 | 欧美精品在欧美一区二区 | 丝袜诱惑一区二区 | 99九九精品免费视频观看 | 泰国午夜理伦三级在线观看 | 99re7在线精品免费视频 | 伊人久久综合视频 | 免费无遮挡十八污污网站 | 国产美女无遮挡软件 | 欧美a级v片在线观看一区 | 黄频在线播放观看 免费 | 日本高清色本免费现在观看 | 日本公妇色中文字幕 | 婷婷色基地 | 欧美亚洲日本一区二区三区浪人 | 国产婷婷丁香久久综合 | 成人精品视频在线观看播放 | 精品国产中文一级毛片在线看 | 午夜国产福利视频一区 | 伊人久久99亚洲精品久久频 | 日本高清动作片www欧美 | 亚洲不卡一区二区三区在线 | 日韩综合一区 | 日本欧美国产精品 | 久久久久久午夜精品 | 青青成人福利国产在线视频 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲精品国产精品国自产 | 日韩在线视频线视频免费网站 | 日本欧美黄色 | 在线视频亚洲色图 | 国产亚洲精品福利 | 国产精品任我爽爆在线播放66 |