<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript數(shù)組去重的多種方法(四種)

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:29:31
        文檔

        JavaScript數(shù)組去重的多種方法(四種)

        JavaScript數(shù)組去重的多種方法(四種):數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復元素。一般來說,兩個元素通過 === 比較返回 true 的視為相同元素,需要去重,所以,1 和 1 是不同的元素,1 和 new Number(1) 是不同的元素,{} 和 {} 是不同的元素
        推薦度:
        導讀JavaScript數(shù)組去重的多種方法(四種):數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復元素。一般來說,兩個元素通過 === 比較返回 true 的視為相同元素,需要去重,所以,1 和 1 是不同的元素,1 和 new Number(1) 是不同的元素,{} 和 {} 是不同的元素

        數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復元素。一般來說,兩個元素通過 === 比較返回 true 的視為相同元素,需要去重,所以,1 和 "1" 是不同的元素,1 和 new Number(1) 是不同的元素,{} 和 {} 是不同的元素(引用不同)。(當然如果需求認為 {} 和 {} 算作相同的元素,那么解法就不一樣了)

        method 1

        使用兩重循環(huán)

        function unique(arr) {
         var res = [];
         for(var i = 0, len = arr.length;i < len; i++) {
         var item = arr[i];
         for(var j = 0, jLen = res.length; j<jLen; j++) {
         if(item == res[j]) break;
         }
         if(j == jLen) res.push(item);
         }
         return res;
        }

        method 2

        function unique(arr) {
         var ret = []
         for (var i = 0; i < arr.length; i++) {
         var item = arr[i]
         if (ret.indexOf(item) === -1) {
         ret.push(item)
         }
         }
         return ret
        }

        這里判斷可以使用一個語法糖

        function unique(arr) {
         var res = [];
         for(var i = 0, len = arr.length;i < len; i++) {
         var item = arr[i];
         (res.indexOf(item) === -1) && res.push(item);
         }
         return res;
        }

        但是在低版本瀏覽器并沒有 indexOf

        var indexOf = [].indexOf ?
         function(arr, item) {
         return arr.indexOf(item)
         } :
         function indexOf(arr, item) {
         for (var i = 0; i < arr.length; i++) {
         if (arr[i] === item) {
         return i
         }
         }
         return -1
         }
        function unique(arr) {
         var ret = []
         for (var i = 0; i < arr.length; i++) {
         var item = arr[i]
         if (indexOf(ret, item) === -1) {
         ret.push(item)
         }
         }
         return ret
        }

        method3

        使用兩重循環(huán)的另外一種比較方式,前面是將原數(shù)組的元素和結果數(shù)組一一比較,下面我們可以將原數(shù)組的重復元素的最后一個元素放入數(shù)組中

        function unique(arr) {
         var ret = [];
         var len = arr.length;
         var isRepeat;
         for(var i=0; i<len; i++) {
         isRepeat = false;
         for(var j=i+1; j<len; j++) {
         if(arr[i] === arr[j]){
         isRepeat = true;
         break;
         }
         }
         if(!isRepeat){
         ret.push(arr[i]);
         }
         }
         return ret;
        }

        這里還有一個優(yōu)化的版本

        function unique(a) {
         var res = [];
         for (var i = 0, len = a.length; i < len; i++) {
         for (var j = i + 1; j < len; j++) {
         // 這一步十分巧妙
         // 如果發(fā)現(xiàn)相同元素
         // 則 i 自增進入下一個循環(huán)比較
         if (a[i] === a[j])
         j = ++i; //j = i = i + 1;
         }
         res.push(a[i]);
         }
         return res;
        }

        method4

        用 javascript 中的 object 對象來當作 哈希表

        function dedup(arr) {
         var hashTable = {};
         return arr.filter(function(value,index,arr){
         var key = JSON.stringify(value);
         var match = Boolean(hashTable[key]);
         return (match ? false : hashTable[key] = true);
         });
        }

        因為 Object 的 key 值都是 String 類型,所以對于 1 和 "1" 無法分別,我們可以稍微改進下,將類型也存入 key 中

        function dedup(arr) {
         var ret = [];
         var hash = {};
         for(var i = 0; i < arr.length; i++) {
         var item = arr[i];
         var key = typeof(item) + item;
         if(hash[key] !== 1) {
         ret.push(item)
         hash[key] = 1;
         }
         }
         return ret;
        }

        總結

        以上所述是小編給大家介紹的JavaScript數(shù)組去重的多種方法(四種),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript數(shù)組去重的多種方法(四種)

        JavaScript數(shù)組去重的多種方法(四種):數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復元素。一般來說,兩個元素通過 === 比較返回 true 的視為相同元素,需要去重,所以,1 和 1 是不同的元素,1 和 new Number(1) 是不同的元素,{} 和 {} 是不同的元素
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费成人在线观看| 免费中文字幕视频| AAAAA级少妇高潮大片免费看| 午夜免费福利在线| 亚洲五月综合网色九月色| 91精品国产免费久久国语蜜臀| 亚洲精品V欧洲精品V日韩精品 | 一级毛片视频免费| 国产大片51精品免费观看| 小说专区亚洲春色校园| 免费在线不卡视频| 四虎一区二区成人免费影院网址| 五月天婷亚洲天综合网精品偷| 无码免费又爽又高潮喷水的视频 | 亚洲精品黄色视频在线观看免费资源| 妞干网免费视频在线观看| 亚洲日韩精品无码专区加勒比 | 久久午夜伦鲁片免费无码| 亚洲色欲www综合网| 免费观看的毛片大全| 亚洲乱码一区二区三区国产精品| 四虎免费大片aⅴ入口| 日韩在线观看免费| 久久国产精品亚洲综合| 成人爽A毛片免费看| 美女羞羞喷液视频免费| 亚洲色婷婷综合久久| 2021在线永久免费视频| 亚洲精品乱码久久久久久V| 亚洲?V无码乱码国产精品| 97在线免费视频| 成人区精品一区二区不卡亚洲| 又粗又硬又黄又爽的免费视频| 99久久免费国产特黄| 亚洲人成在线播放| 亚洲Av无码乱码在线播放| 久久免费观看国产精品88av| 亚洲色偷精品一区二区三区| 中文字幕亚洲不卡在线亚瑟| 国产91色综合久久免费分享| 成人免费网站久久久|