<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • JS數(shù)組去重的幾種方法

    2021-9-27    前端達(dá)人

    數(shù)組去重

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

    var arr = [2,3,4,2,34,21,1,12,3,4,1] for(var i =0;i<arr.length;i++){ //第一層:每次循環(huán)拿到arr中一個元素 for(var j=i+1;j<arr.length;j++){ //第二層:每次拿到的元素再和每次拿到的元素后邊的元素依次進(jìn)行比對(因為第一個要從第二個開始比,第二個要從第三個比以此類推,所以這里的j應(yīng)比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 循環(huán)和indexof、循環(huán)和includes

    創(chuàng)建新數(shù)組,循環(huán)舊數(shù)組,看每次循環(huán)的元素是否存在于新數(shù)組中沒有就把當(dāng)前元素添加到新數(shù)組中

    //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 利用對象屬性不能重復(fù)去重

    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] //注意這種方法不僅給數(shù)組重新排列而且還改變了數(shù)組中元素的類型 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    4 ES6 Set

    ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。

    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在數(shù)組中找元素的時候,碰到符合條件的第一個就會把它的下標(biāo)返回

    var arr = [2,3,4,2,34,21,1,12,3,4,1] var arr2 = arr.filter((e,i)=>{ //看每次循環(huán)的元素在數(shù)組中出現(xiàn)的第一個下標(biāo)位置(indexOf返回的位置),和每次循環(huán)的元素的下標(biāo)(filter循環(huán)每次的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)=>{ //這里當(dāng)然也可以用indexOf來判斷是否存在 pre.includes(e)?pre:pre.push(e); return pre },[]) console.log(arr2) //arr2:[1, 2, 3, 4, 12, 21, 34]
    

    藍(lán)藍(lán)設(shè)計建立了UI設(shè)計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設(shè)計,如果有興趣的話,可以進(jìn)入一起成長學(xué)習(xí),請掃碼藍(lán)小助,報下信息,藍(lán)小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請與我們聯(lián)系。

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

    轉(zhuǎn)自:csdn 免責(zé)聲明:藍(lán)藍(lán)設(shè)計尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問題,請及時與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

    藍(lán)藍(lán)設(shè)計m.skdbbs.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

    日歷

    鏈接

    個人資料

    存檔

    主站蜘蛛池模板: 日韩精品无码一区二区中文字幕| 国语精品一区二区三区| 亚洲精品国产精品乱码在线观看| 久久精品国产一区| 无码日韩精品一区二区免费暖暖| 精品精品国产欧美在线小说区 | 亚洲中文字幕无码久久精品1| 久久国产精品久久久| 亚洲精品无码久久一线| 精品一区二区无码AV| 日本久久久精品中文字幕| 久久精品无码专区免费东京热| 欧美精品色婷婷五月综合| 国产精品v欧美精品v日本精| 99国产欧美久久久精品蜜芽| 亚洲精品高清无码视频| 欧美日韩精品一区二区三区不卡| 国产高清在线精品一区二区| 日本精品不卡视频| 国内精品手机在线观看视频| 国产三级精品三级在线专区1| 欧美精品一区二区蜜臀亚洲| 网友偷拍日韩精品| 久久久久亚洲精品无码网址 | 久久久久久国产精品无码超碰| 亚洲精品国产V片在线观看| 好湿好大硬得深一点动态图91精品福利一区二区 | 久久精品a亚洲国产v高清不卡 | 国产成人99久久亚洲综合精品| 久久久国产精品福利免费| 国产99视频精品免费专区| 国产suv精品一区二区33| 99爱在线精品免费观看| 99精品在线观看| 久久精品一区二区| 国产VA免费精品高清在线| 精品国产91久久久久久久a| 精品无码人妻久久久久久| 久久久亚洲精品蜜桃臀| 蜜臀精品国产高清在线观看| 午夜精品久久久久久影视777|