JavaScript 數(shù)組去重

一、結(jié)合 includes() 輸出的還是數(shù)組
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>數(shù)組去重</title>
</head>

<body>
    <script>
        let arr = [1, 1, 2, 3]
        function unique(arr) {
            // 1.判斷傳進來的是不是數(shù)組
            if (!Array.isArray(arr)) {
                console.log('傳進來的不是數(shù)組');
            }
            //2.定義一個新的空數(shù)組,方便提取出去重后的數(shù)組
            let newArr = [6, 8]
            // 3.定義循環(huán)下標(biāo)
            for (let i = 0; i < arr.length; i++) {
                //4. 判斷 新的空數(shù)組 是否包含了 舊數(shù)組的某一項,不包含就把這一項添加到新數(shù)組
                if (!newArr.includes(arr[i])) {
                    newArr.push(arr[i])
                }
            }
            // 5.同層 把定義的變量 return 出去
            return newArr
        }
        console.log(unique(arr)); //(5) [3, 2, 1, 6, 8]    輸出的還是數(shù)組

        document.writeln(unique(arr)) //1,2,3

    </script>
</body>

</html>
二、結(jié)合 find(), 輸出的還是數(shù)組
<script>
        let arr = [1, 2, 3, 1, 2]
        function unique(arr) {
            if (!Array.isArray(arr)) {
                console.log('傳進來的不是數(shù)組');
                return
            }
            var arr2 = []
            for (let i = 0; i < arr.length; i++) {
            //find()傳入一個回調(diào)函數(shù),在回調(diào)函數(shù)里面把傳入的每一項拿到, 找符合條件的第一項,如果符合就返回
                if (!arr2.find(function (v) {
                    // console.log(v);
                    return v == arr[i]    //v  傳過來的
                })) {
                    arr2.push(arr[i])
                }
            }
            return arr2
        }
        console.log(unique(arr));//(3) [1, 2, 3]
    </script>

箭頭函數(shù)寫

 let arr = [1, 2, 3, 1, 2]
        function unique(arr) {
            if (!Array.isArray(arr)) {
                console.log('傳進來的不是數(shù)組');
            }
            let newArr = []
            for (let i = 0; i < arr.length; i++) {
                if (!newArr.find((v) => {
                    return v == arr[i]
                })) {
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
        console.log(unique(arr)); //(3) [1, 2, 3]
三、結(jié)合 findIndex(), 輸出的還是數(shù)組
 <script>
        let arr = [1, 1, 2, 3]
        function unique(arr) {
            var arr3 = []
            if (!Array.isArray(arr)) {
                console.log('抱歉,傳入的不是數(shù)組');
            }
            for (let i = 0; i < arr.length; i++) {
                if (arr3.findIndex(function (v) {
                    return v == arr[i]
                }) == -1) {
                    arr3.push(arr[i])
                }
            }
            return arr3
        }
        console.log(unique(arr));//(3) [1, 2, 3]
    </script>
四、es6 Set() 去重后,不是數(shù)組類型
<script>
        let arr = [1, 2, 3, 1, 2]
        const newArr = new Set(arr)
        console.log(newArr);  //Set(3) {1, 2, 3}  去重后,不是數(shù)組類型
        document.writeln(newArr)  //[object Set]
    </script>

找到 方法了:
獲取唯一值數(shù)組可能比想象的要容易:

var j = [...new Set([1, 2, 3, 3])]
>> [1, 2, 3]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 數(shù)組去重是一個老生常談的話題,也是前端童鞋在面試時的一道高頻題。本文將深入的探索數(shù)組去重的原理及實現(xiàn),為各位...
    盼少閱讀 349評論 0 0
  • 前言 數(shù)組去重是一個老生常談的話題,也是前端童鞋在面試時的一道高頻題。本文將深入的探索數(shù)組去重的原理及實現(xiàn),為各位...
    胡哥有話說閱讀 325評論 0 0
  • 世界上很多的困難,只是思維上設(shè)限。 數(shù)組翻轉(zhuǎn) 數(shù)組翻轉(zhuǎn)有很多方法,這里總結(jié)倆種: 原生方法 reverse 使用循...
    寧不空閱讀 184評論 0 0
  • 一、測試模版 數(shù)組去重是一個老生常談的問題,網(wǎng)上流傳著有各種各樣的解法 為了測試這些解法的性能,我寫了一個測試模版...
    過期貓糧_45f1閱讀 1,069評論 0 0
  • 數(shù)組去重是一個經(jīng)常會用到的方法,我寫了一個測試模板,測試一下常見的數(shù)據(jù)去重的方法的性能 測試模板 1、Array....
    路爾軒閱讀 16,373評論 1 5

友情鏈接更多精彩內(nèi)容