最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數(shù)組去重方案

 更新時(shí)間:2021年09月28日 15:11:31   作者:我z  
這篇文章主要介紹了JS數(shù)組方案,先總結(jié)一下我們數(shù)組的方法:pop、push、shift、unshift、slice、splice、sort、reverse、concat、join、indexOf、lastIndexOf、map、forEach,下面文章將詳細(xì)對他們做個(gè)詳細(xì)介紹,需要的朋友可以參考一下

還有其他可以處理數(shù)組的幾個(gè)方法~
- includes:方法用來判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,根據(jù)情況,如果包含則返回 true,否則返回false。
- find:返回第一次找到的那一項(xiàng)
- some:返回一個(gè)布爾值,只要一個(gè)是true,就返回true
- every:返回一個(gè)布爾值,需要每一項(xiàng)都是true,才返回true
- filter:返回一個(gè)過濾后的新數(shù)組;如果返回true就留下,false就過濾掉
- reduce:收斂

下面我們進(jìn)入正題~(希望能對你有幫助~小編有點(diǎn)皮??!哈哈哈哈哈哈)

方法一:set :不是一種數(shù)據(jù)類型,是一種數(shù)據(jù)結(jié)構(gòu);成員唯一

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let s  = new Set(ary);
        // Array.from : 將set數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)成真正的數(shù)組;
        return  Array.from(s)
    }
    unique(arr);

方法二:對象屬性名不能重復(fù)

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let obj = {};
        for(let i=0;i<ary.length;i++){
            let cur = ary[i];
            if(obj[cur]){
                //ary.splice(i,1);// 導(dǎo)致數(shù)組塌陷
                ary[i]=ary[ary.length-1];
                ary.length--;// 刪除最后一項(xiàng)
                i--;
                continue;
            }
            obj[cur]=cur;// 給obj新增鍵值對;屬性名和屬性值是一樣的
        }
    }
    unique(arr);

方法三:indexOf

let arr = [12,1,12,3,1,88,66,9,66];
 function unique(ary) {
        let newAry = [];
        for(let i=0;i<ary.length;i++){
            let  cur = ary[i];
            if(newAry.indexOf(cur)===-1){
                newAry.push(cur);
            }
        }
        return newAry;
    }
    unique(arr)

方法四:sort

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
       let a = ary.sort(function (a,b) {
           return a-b;
       });
       for(let i=0;i<a.length;i++){
           if(a[i]===a[i+1]){
               a.splice(i+1,1);
               i--;
           }
       }
       return a;
   }
   unique(arr)

方法五:includes :包含;如果數(shù)組包含那一項(xiàng),返回true;不包含返回false;

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let newAry = [];
        let len = ary.length;
        for(let i=0;i<len;i++){
            let cur = ary[i];
            if(!newAry.includes(cur)){
                newAry.push(cur);
            }
        }
        return newAry;
    }
    console.log(unique(arr));

方法六:hasOwnProperty : 檢測屬性名是否是對象的一個(gè)私有屬性;返回一個(gè)布爾值;

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let obj = {};
        return ary.filter(function (item,index,a) {
            // item : 數(shù)組每一個(gè)成員
            // index: 成員對應(yīng)的索引
            // a : 整個(gè)數(shù)組
            // hasOwnProperty來校驗(yàn)的該屬性是否出現(xiàn)過;
           return  obj.hasOwnProperty(typeof item+item)?false:obj[typeof item+item]=true;
           if(obj.hasOwnProperty(typeof item+item)){
               return false
           }else{
               obj[typeof item+item]=true;
               return true;
           }
        })
    }
    console.log(unique(arr))

方法七:filter+indexOf

let arr = [12,1,12,3,1,88,66,9,66];
    function unique(ary) {
        return ary.filter(function (item,index,a) {
            return ary.indexOf(item)===index;
        })
    }
    console.log(unique(arr));

方法八:splice

let arr = [12,1,12,3,1,88,66,9,66];
 function unique(ary) {
        for(let i=0;i<ary.length;i++){
            for(j=i+1;j<ary.length;j++){
                if(ary[i]===ary[j]){
                    ary.splice(j,1);
                    j--;
                }
            }
        }
        return ary;
    }
    unique(arr);

方法九:遞歸

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let  len= ary.length;
        ary = ary.sort(function (a,b) {
            return a-b;
        });
        function loop(index) {
            if(index>=1){
                if(ary[index]===ary[index-1]){
                    ary.splice(index,1);
                }
                loop(index-1)
            }
        }
        loop(len-1);
        return ary;
    }
    console.log(unique(arr));

方法十:Map :利用了Map數(shù)據(jù)結(jié)構(gòu)存值的特點(diǎn);

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        let newAry =[];
        let map = new Map();
        for(let i=0;i<ary.length;i++){
            if(!map.has(ary[i])){
                map.set(ary[i],true);
                newAry.push(ary[i]);
            }
        }
    }
    unique(arr);

方法十一:reduce

let arr = [12,1,12,3,1,88,66,9,66];
function unique(ary) {
        // reduce : 第一個(gè)是函數(shù),第二個(gè)參數(shù)會(huì)傳給第一次回調(diào)的prev;
        return ary.reduce((prev,next)=>{
            // 該函數(shù)返回值是下一次執(zhí)行的prev;
            return prev.includes(next)?prev:[...prev,next];
        },[])
    }
    console.log(unique(arr));

方法十二:類似于方法一的set,用了剩余運(yùn)算符...

let  arr = [12,1,12,3,1,88,66,9,66];
    let a = [...new Set(arr)];
    console.log(a);

到此這篇關(guān)于JS數(shù)組方案的文章就介紹到這了,更多相關(guān)JS數(shù)組去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 緩存(本地緩存、異步緩存、同步緩存)詳解

    微信小程序 緩存(本地緩存、異步緩存、同步緩存)詳解

    這篇文章主要介紹了微信小程序 緩存(本地緩存、異步緩存、同步緩存)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • svgicon組件使用方法示例詳解

    svgicon組件使用方法示例詳解

    這篇文章主要為大家介紹了svgicon組件使用方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Zod進(jìn)行TypeScript類型驗(yàn)證使用詳解

    Zod進(jìn)行TypeScript類型驗(yàn)證使用詳解

    這篇文章主要為大家介紹了Zod進(jìn)行TypeScript類型驗(yàn)證使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 項(xiàng)目中常用的 .env 文件原理源碼解析

    項(xiàng)目中常用的 .env 文件原理源碼解析

    這篇文章主要為大家介紹了項(xiàng)目中常用的 .env 文件原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • JS前端白屏前世今生及解決方式

    JS前端白屏前世今生及解決方式

    這篇文章主要為大家介紹了JS前端白屏前世今生及解決方式案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 微信小程序與php 實(shí)現(xiàn)微信支付的簡單實(shí)例

    微信小程序與php 實(shí)現(xiàn)微信支付的簡單實(shí)例

    這篇文章主要介紹了微信小程序與php 實(shí)現(xiàn)微信支付的簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 微信小程序 使用canvas制作K線實(shí)例詳解

    微信小程序 使用canvas制作K線實(shí)例詳解

    這篇文章主要介紹了微信小程序 使用canvas制作K線實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • JavaScript?ES6語法中l(wèi)et,const?,var?的區(qū)別

    JavaScript?ES6語法中l(wèi)et,const?,var?的區(qū)別

    這篇文章主要為大家介紹了JavaScript中l(wèi)et,const?,var?的區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • JavaScript 定時(shí)器詳情

    JavaScript 定時(shí)器詳情

    這篇文章主要介紹了JavaScript 定時(shí)器,在JavaScript中定時(shí)器有兩個(gè) setInterval() 與 setTimeout() 分別還有取消定時(shí)器的方法,下面來看看文章的詳細(xì)介紹
    2021-11-11
  • nuxt.js 多環(huán)境變量配置

    nuxt.js 多環(huán)境變量配置

    這篇文章主要介紹了nuxt.js 多環(huán)境變量配置,一般在香米開發(fā)中會(huì)有三個(gè)環(huán)境開發(fā)環(huán)境也叫測試環(huán)境(test) 、RC環(huán)境也叫預(yù)發(fā)布環(huán)境(rc) 、線上環(huán)境(production) 下面來看看文章內(nèi)容的詳細(xì)介紹,需要的朋友可以參考一下
    2021-11-11

最新評論

安西县| 盐池县| 南木林县| 鹿邑县| 巴南区| 吉水县| 中超| 班戈县| 荣昌县| 鄱阳县| 绥中县| 福泉市| 阿合奇县| 炉霍县| 隆子县| 池州市| 厦门市| 商水县| 揭阳市| 西藏| 浦城县| 三穗县| 崇左市| 咸阳市| 扎赉特旗| 通城县| 长顺县| 芦山县| 福州市| 廊坊市| 翼城县| 霍林郭勒市| 黎川县| 南阳市| 大埔县| 贞丰县| 鲁山县| 淅川县| 津南区| 田阳县| 广州市|