亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS數(shù)組去重的常用4種方法

 更新時間:2022年04月06日 09:48:29   投稿:wdc  
這篇文章主要介紹了JS數(shù)組去重的常用4種方法,ES6的Set類數(shù)組去重,for循環(huán)嵌套for循環(huán),indexOf去重,利用filter需要的朋友可以參考下

1.ES6的Set類數(shù)組去重

var arr = [1,2,2,3,3,4,4,1,5,6,6,5]
function unique (arr) {
  return Array.from(new Set(arr))
}

console.log(unique(arr))
 //[1,2,3,4,5,6]

ES6的Set是類數(shù)組,里面的值是唯一的,但是不是真正的數(shù)組所以要通過Array.from()方法轉(zhuǎn)化為數(shù)組,不考慮兼容問題是最簡單的去重方法

2.for循環(huán)嵌套for循環(huán)

var arr = [1,2,2,3,3,4,4,1,5,6,6,5];

function unique(arr) {
    for (var i = 0; i < arr.length; i++) {    // 首次遍歷數(shù)組
        for (var j = i + 1; j < arr.length; j++) {   // 再次遍歷數(shù)組
            if (arr[i] == arr[j]) {          // 判斷連個值是否相等
                arr.splice(j, 1);           // 相等刪除后者
                j--;
            }
        }
    }
    return arr
}
console.log(unique(arr));

兩個for循環(huán)加上spliceES5常用的方法
第一個for遍歷每個數(shù)組項,第二個for循環(huán)遍歷第一個for循環(huán)當前遍歷項后面的數(shù)組項與第一個for當前數(shù)組項作比較,后面存在相等的項,則刪除掉此項,并且j要減一,因為刪除了一項,所以后面的元素往前移了,所以減一來抵消遷移確保每一項遍歷完

3.indexOf去重

var arr = [1,2,2,3,3,4,4,1,5,6,6,5];
function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('錯誤!')
        return
    }
    var array = [];
    for (var i = 0; i < arr.length; i++) {    // 首次遍歷數(shù)組
        if (array.indexOf(arr[i]) === -1) {   // 判斷索引有沒有等于
            array.push(arr[i])
        }
    }
    return array
}
console.log(unique(arr));

indexOf()會判斷數(shù)組里面是否含有這個值,沒有則返回-1,有則返回存在的數(shù)組下標值,有多個只返回第一個,不再繼續(xù)判斷
for循環(huán)加indexOf,for循環(huán)存在newArr里則什么都不做,不存在則加入新數(shù)組里,返回新數(shù)組

4.利用filter

var arr = [1,2,2,3,3,4,4,1,5,6,6,5];
function unique(arr) {
    return arr.filter( (item, index, arr) => {
        //當前元素,在原始數(shù)組中的第一個索引==當前索引值,否則返回當前元素
        return arr.indexOf(item) === index;
    });
}
console.log(unique(arr));

filter加indexOf,判斷當前的索引值等不等于indexOf返回的索引值,等于就是同一個數(shù)組項,不等于的情況就是當前的item是第二次出現(xiàn),而indexOf判斷出來的下標值還是第一個,這一項則不會返回,所以達到了去重的要求

更多關于JS數(shù)組去重的方法請查看下面的相關鏈接

相關文章

  • 深入認識javascript中的eval函數(shù)

    深入認識javascript中的eval函數(shù)

    發(fā)現(xiàn)為本文起一個合適的標題還不是那么容易,呵呵,所以在此先說明下本文的兩個目的.
    2009-11-11
  • 使用JS讀秒使用示例

    使用JS讀秒使用示例

    JS讀秒,在某些情況下還是比較實用的,下面有個簡單的示例,感興趣的朋友可以參考下
    2013-09-09
  • JS實現(xiàn)超級好看的鼠標小尾巴特效

    JS實現(xiàn)超級好看的鼠標小尾巴特效

    這篇文章主要給大家介紹了關于JS實現(xiàn)超級好看的鼠標小尾巴特效的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • 微信小程序渲染性能調(diào)優(yōu)小結

    微信小程序渲染性能調(diào)優(yōu)小結

    這篇文章主要介紹了微信小程序渲染性能調(diào)優(yōu),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • JavaScript實現(xiàn)無刷新上傳預覽圖片功能

    JavaScript實現(xiàn)無刷新上傳預覽圖片功能

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)無刷新上傳預覽圖片功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 微信小程序比較兩個數(shù)大小的實現(xiàn)方法

    微信小程序比較兩個數(shù)大小的實現(xiàn)方法

    最近在工作中遇到一個需求,可以自動對比兩個數(shù)的大小,下面這篇文章主要給大家介紹了關于微信小程序比較兩個數(shù)大小的實現(xiàn)方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • BootStrap模態(tài)框閃退問題實例代碼詳解

    BootStrap模態(tài)框閃退問題實例代碼詳解

    這篇文章主要介紹了BootStrap模態(tài)框閃退問題實例代碼詳解,需要的朋友可以參考下
    2018-12-12
  • 談談對JavaScript原生拖放的深入理解

    談談對JavaScript原生拖放的深入理解

    拖放(drag-and-drop,DnD)其實是兩個動作——拖和放。所以,它涉及到兩個元素。一個是被拖的元素,稱為拖放源;另一個是要放的目標,稱為拖放目標。本文將通過拆分這兩個概念來詳細介紹原生拖放,感興趣的朋友一起學習吧
    2016-09-09
  • html+js實現(xiàn)動態(tài)顯示本地時間

    html+js實現(xiàn)動態(tài)顯示本地時間

    顯示本地時間的方法有很多,在本文將為大家介紹下如何使用html+js實現(xiàn)動態(tài)顯示本地時間,感興趣的朋友可以了解下
    2013-09-09
  • JavaScript監(jiān)聽和禁用瀏覽器回車事件實例

    JavaScript監(jiān)聽和禁用瀏覽器回車事件實例

    這篇文章主要介紹了JavaScript監(jiān)聽和禁用瀏覽器回車事件實例,本文直接給出示例代碼,需要的朋友可以參考下
    2015-01-01

最新評論