<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JavaScript中數組去重的幾種方法

      JavaScript中數組去重的幾種方法

      正常情況下,數據去重的工作一般都是由后端同事來完成的,但是前端也要掌握好處理數據的能力,萬一去重的工作交給我們大前端處理,我們也不能慫呀。現在我總結了一些去重的方法,希望對大家有點幫助。

      方法一:new Set()實現數組去重

      ES6 提供了新的數據結構 Set,它類似于數組,但是成員的值都是唯一的,沒有重復的值。 Set 本身是一個構造函數,用來生成 Set 數據結構。Set函數可以接受一個數組,用于初始化。根據 Set的數據特性,我們可以實現數組去重。

      let list = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];
      let list1 = Array.from(new Set(list)); //  [ 1, "a", true, false, null, "", undefined ]
      let list2 = [...new Set(list)]; //  [ 1, "a", true, false, null, "", undefined ]
      

      方法二:some()+循環去重

      some() 方法用于檢測數組中的元素是否滿足指定條件(函數提供) 。 如果有一個元素滿足條件,則表達式返回true , 剩余的元素不會再執行檢測。 如果沒有滿足條件的元素,則返回false。 我們可以定義一個新數組來承接沒有重復的數據,遍歷原始數組的時候,用新數組來判斷數據是否已經出現過。

       function distinct(list) {
           let result = [list[0]];// 用于承接沒有重復的數據,初始時將原始數組的第一個值賦給它。
           for (let i = 1; i < list.length; i++) {
               // 判斷結果數組中是否存在一樣的值,若果沒有的話則將數據存入結果數組中。
               if (!(result.some(val => list[i] === val))) {
                   result.push(list[i]);
               }
           }
           return result;
       }
      let arr = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];
      distinct(arr); // [ 1, "a", true, false, null, "", undefined ]
      

      方法三:雙重for循環去重

      雙重for循環,第一層循環確保數組中的每一項都能被比較,第二層循環確保被比較項后的每一項都能跟被比較項比較。

      function distinct2(list) {
          for (let i = 0; i < list.length; i++) {
              for (let j = i + 1; j < list.length; j++) {
                  // 后面數據的若跟前一項數據相同,則重復,需要去除。
                  if (list[i] === list[j]) {
                      list.splice(j, 1); // 去除后面的相同項
                      j--;
                  }
              }
          }
          return list;
      }
      let arr = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];
      distinct2(arr); // [ 1, "a", true, false, null, "", undefined ]
      

      方法四:hasOwnProperty()方法去重

      hasOwnProperty() 方法用來檢測一個屬性是否是對象的自有屬性,而不是從原型鏈繼承的。如果該屬性是自有屬性,那么返回 true,否則返回 false。

      function unique(arr) {
        var obj = {}; // 用來記錄數組中的數據
        return arr.filter(function(item, index, arr){
            // 如果記錄對象中存在某個數據,則返回false過濾掉;否則obj進行記錄并篩選出來
            return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
        })
      }
      let arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
      unique(arr) //  [ 1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, 'a', {}]
      

      方法五:利用filter()+indexOf()方法去重

      indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的位置。

      function unique(arr) {
        return arr.filter(function(item, index, arr) {
          // 從數組0位開始查,如果當前元素在原始數組中的第一個索引==當前索引值,說明它是第一次出現。
          return arr.indexOf(item, 0) === index;
        });
      }
      let list = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];
      unique(list); //  [ 1, "a", true, false, null, "", undefined ]
      

      此外,數組去重還可以利用filter()、includes()等方法實現,但是思路都跟上面幾種方法類似,這里就不一一列舉了。

      posted @ 2020-07-03 20:23  老甄Home  閱讀(345)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品日韩av在线播放| 久久蜜臀av一区三区| 韩国精品福利视频一区二区| 国产精品国产精品国产专区 | 国产精品第一页中文字幕| 宁阳县| 国产亚洲综合区成人国产 | 无码抽搐高潮喷水流白浆| 国内精品人妻一区二区三区| 狠狠躁夜夜躁人人爽天天5| 精品久久久久久无码人妻蜜桃| 国产无遮挡无码视频在线观看 | 久久综合色一综合色88| 九九久久精品国产免费看小说 | 自拍视频在线观看成人| 色欧美片视频在线观看| 在线aⅴ亚洲中文字幕| 欧洲精品一区二区三区久久| 熟妇人妻无码中文字幕老熟妇| 日本高清视频网站www| 国内不卡一区二区三区| 小嫩批日出水无码视频免费| 亚洲男人的天堂久久香蕉| 狠狠色丁香婷婷综合尤物| 欧美男男作爱videos可播放| 欧美在线观看www| 武装少女在线观看高清完整版免费| 国产亚洲精品aaaa片app| 久久夜色精品亚洲国产av| 亚洲精品动漫免费二区| 国产午夜A理论毛片| 久久综合给合久久狠狠狠88| 精品国产免费人成在线观看| 亚洲成在人线AⅤ中文字幕| 狠狠干| 国产一区二区不卡自拍| 久久一级精品久熟女人妻| 精品熟女亚洲av在线观看| 亚洲国产精品无码一区二区三区 | 超碰国产天天做天天爽| 国产美女午夜福利视频|