<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
        主站蜘蛛池模板: 日本免费人成视频在线观看| 一级毛片免费视频网站| 无码av免费网站| 亚洲av无码成人黄网站在线观看 | h视频在线免费看| 亚洲综合久久久久久中文字幕| 亚洲国产精品免费视频| 亚洲综合免费视频| 丁香花免费完整高清观看| 亚洲人成网站色在线观看| 免费看的成人yellow视频| 亚洲av乱码一区二区三区按摩| 国产精品公开免费视频| 三年片在线观看免费观看大全中国| 免费国内精品久久久久影院| 直接进入免费看黄的网站| 精品国产亚洲男女在线线电影| 成在线人视频免费视频| 亚洲一卡2卡三卡4卡有限公司| 三年片在线观看免费观看大全一| 337p日本欧洲亚洲大胆色噜噜| 日韩欧毛片免费视频| 亚洲天然素人无码专区| 免费人妻无码不卡中文字幕18禁| 一进一出60分钟免费视频| 国产成人亚洲精品狼色在线 | 中文字幕在线日亚洲9| 四虎永久免费观看| 男女一边桶一边摸一边脱视频免费 | 亚洲精品无码永久在线观看| 13小箩利洗澡无码视频网站免费 | 99精品视频在线视频免费观看| 亚洲成人福利在线观看| 日日AV拍夜夜添久久免费| 抽搐一进一出gif免费视频| 亚洲欧洲日本天天堂在线观看| 青青草国产免费久久久下载 | 三年片在线观看免费观看大全动漫| 亚洲 欧洲 视频 伦小说| 国产免费卡一卡三卡乱码| 日本卡1卡2卡三卡免费|