91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Js中去除數組中重復元素的4種方法

發布時間:2020-06-11 22:24:20 來源:網絡 閱讀:715 作者:h我叫小刀 欄目:開發技術

    今天工作遇到此問題,嘗試多個方法不盡人意,故此寫個博客來總結一下如何在js中去除重復元素。


    方法1:        

        Array.prototype.method1 = function(){
            var arr[];    //定義一個臨時數組
            for(var i = 0; i < this.length; i++){    //循環遍歷當前數組
                //判斷當前數組下標為i的元素是否已經保存到臨時數組
                //如果已保存,則跳過,否則將此元素保存到臨時數組中
                if(arr1.indexOf(this[i]) == -1){
                    arr.push(this[i]);
                }
            }
            return arr;
        }

    方法2:

        
        Array.prototype.method2 = function(){
            var h{};    //定義一個hash表
            var arr[];  //定義一個臨時數組
            
            for(var i = 0; i < this.length; i++){    //循環遍歷當前數組
                //對元素進行判斷,看是否已經存在表中,如果存在則跳過,否則存入臨時數組
                if(!h[this[i]]){
                    //存入hash表
                    h[this[i]] = true;
                    //把當前數組元素存入到臨時數組中
                    arr.push(this[i]);
                }
            }
            return arr;
        }

    方法3:

        Array.prototype.method3 = function(){
            //直接定義結果數組
            var arr[this[0]];
            for(var i = 1; i < this.length; i++){    //從數組第二項開始循環遍歷此數組
                //對元素進行判斷:
                //如果數組當前元素在此數組中第一次出現的位置不是i
                //那么我們可以判斷第i項元素是重復的,否則直接存入結果數組
                if(this.indexOf(this[i]) == i){
                    arr.push(this[i]);
                }
            }
            return arr;
        
        }

    方法4:

        Array.prototype.method4 = function(){
            //將數組進行排序
            this.sort();
            //定義結果數組
            var arr[this[0]];
            for(var i = 1; i < this.length; i++){    //從數組第二項開始循環遍歷數組
                //判斷相鄰兩個元素是否相等,如果相等說明數據重復,否則將元素寫入結果數組
                if(this[i] !== arr[arr.length - 1]){
                    arr.push(this[i]);
                }            
            }
            return arr;
            
        }

    例如:

        var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
        alert(arr.method3());

    方法1和方法3都用到了數組的indexOf()方法,此方法主要用來查找元素在數組中第一次出現的位置。比較浪費資源和時間。

    方法2使用的是hash表,把已經出現過的元素通過下標形式寫入到一個object內,下標的引用要比用數組indexOf()方法搜索節省時間。

    方法4是先將數組排序,然后一次比較相鄰的兩個元素的值,排序使用的是js原生的sort()方法。

    讀者可以自行編寫程序測試四種方法的效率如何。例如:首先利用隨機函數生成一個50000長度的隨機數數組,然后分別用四種方法進行執行,記錄程序運行時間進行比較四種方法的優劣。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高尔夫| 砚山县| 卫辉市| 邵阳县| 华宁县| 独山县| 都昌县| 会宁县| 曲阳县| 新津县| 农安县| 资源县| 西藏| 始兴县| 湟中县| 汨罗市| 天津市| 闸北区| 九龙坡区| 黔南| 汽车| 黑山县| 临沭县| 微博| 佛教| 高碑店市| 珲春市| 保康县| 娄底市| 马山县| 镇平县| 庆元县| 衡南县| 亳州市| 宜兰市| 蓬安县| 南召县| 永寿县| 安义县| 万宁市| 乌兰县|