js數組中如何去除重復值?


在日常開發中,我們可能會遇到將一個數組中里面的重復值去除,那么,我就將我自己所學習到的幾種方法分享出來

  去除數組重復值方法:

    1,利用indexOf()方法去除

    思路:創建一個新數組,然后循環要去重的數組,然后用新數組去找要去重數組的值,如果找不到則使用.push添加到新數組,最后把新數組返回回去就行了

       看不懂沒關系,上代碼就比較容易懂了

function fun(arr){
    let newsArr = [];
    for (let i = 0; i < arr.length; i++) {
        if(newsArr.indexOf(arr[i]) === -1){
            newsArr.push(arr[i]);
        }
    }
    return newsArr;
}

    2,利用splice方法去除

    思路:這個方法有點模仿冒泡  倆層循環,外層循環遍歷數組,內層循環比較值,如果有相同, 則使用splice去除 然后返回處理完的數組即可

       看不懂沒關系,上代碼就比較容易懂了

function fun(arr){
    for (let i = 0; i < arr.length; i++) {
        for(let j = i+1; j < arr.length; j++){
            if(arr[i]==arr[j]){
                arr.splice(j,1);
          j--; } } }
return arr; }

    3,利用es6新增的集合Set去除 

    這里簡單介紹一下Set 集合,他跟數組很相識,但不是數組,是集合。他里面也有跟多方法,如增(add),刪(delete),查(has)等等。

    他最重要的特點是:元素不能重復,即在Set集合不會出現相同的元素

    Set去重方案1:

    思路:因為Set集合里面不允許出現重復值,那我們就可以利用這個特點將我們的數組傳進去去重

       首先new一個Set集合將要去重的數組作為參數傳進去,然后創建一個新數組,循環遍歷一下集合,將每個集合元素添加到新數組,最后將新數組返回即可

function fun(arr){
    let s1 = new Set(arr);
    let arr2 = [];
    for(let item of s1){
        arr2.push(item);
    }
    return arr2;
}

    Set去重方案2(使用數組方法Array.form()):

    思路:Array.from(); 能夠把偽數組,集合轉成數組類型,這個方法配合上Set集合就剛好符合我們的需求

function fun(arr){
    let s1 = new Set(arr); 
    return Array.from(s1);
}

    Set去重方案3(使用es6展開運算符...):

    思路:es6展開運算符能夠將一個數組轉為用逗號分隔的參數序列

function fun(arr){
    let s1 = new Set(arr); 
    return [...s1];
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM