首頁技術(shù)文章正文

如何使用Set數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù)?Set實例操作演示

更新時間:2022-07-27 來源:黑馬程序員 瀏覽量:

Set數(shù)據(jù)結(jié)構(gòu)

ES6提供了新的數(shù)據(jù)結(jié)構(gòu)Set。Set類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。它的實例的方法分為兩大類,即操作方法(用于操數(shù)據(jù))和遍歷方法(用于遍歷成員)。

Set數(shù)據(jù)結(jié)構(gòu)常用于電商網(wǎng)站的搜索功能中,用戶搜索完成后,網(wǎng)站要記錄用戶搜索的關(guān)鍵字,方便用戶下次直接單擊搜索歷史關(guān)鍵字來完成搜索。

1.創(chuàng)建Set數(shù)據(jù)結(jié)構(gòu)

Set本身是一個構(gòu)造函數(shù),創(chuàng)建此構(gòu)造函數(shù)的實例對象就是創(chuàng)建Set數(shù)據(jù)結(jié)構(gòu)。創(chuàng)建Set數(shù)據(jù)結(jié)構(gòu)示例代碼:

   <script>
     const s1 = new Set0; //使用new關(guān)鍵字創(chuàng)建Set構(gòu)造函數(shù)的實例
     console.log(s1.size); //輸出結(jié)果: 0
   </script>

2.初始化Set數(shù)據(jù)結(jié)構(gòu)

在創(chuàng)建Set數(shù)據(jù)結(jié)構(gòu)時,也可以傳遞一個數(shù)組作為參數(shù),用來初始化。初始化Set數(shù)據(jù)結(jié)構(gòu)示例代碼如下:

   <script>
    const s2 = new Set(['a', 'b']);
    console.log(s2.size);//輸出結(jié)果:2
   </script>

3.利用Set數(shù)據(jù)結(jié)構(gòu)給數(shù)組去重

在初始化Set構(gòu)造函數(shù)時,可以傳遞一個數(shù)組作為參數(shù),如果數(shù)組中有重復(fù)的值,那么Set數(shù)據(jù)結(jié)構(gòu)會把重復(fù)的值過濾掉。

數(shù)組去重示例代碼

   <script>
    const s3 = new Set(["a", "a", "b","b"]);
    console.log(s3.size);//輸出結(jié)果:2
    const ary = [...s3];
    //輸出結(jié)果:(2)["a","b"]
    donsole.log(ary);
   </script>

Set實例的操作方法

1.Set實例的add0方法

Set實例提供的add(0方法用于向Set數(shù)據(jù)結(jié)構(gòu)中添加某個值,它接收一個參數(shù)代表要添加的值,返回Set結(jié)構(gòu)本身。演示add0方法的使用

   <script>
    const s4 = new 
    Set();
    s4.add('a').add('b');
    console.log(s4.size);//輸出結(jié)果:2
   </script>

2.Set實例的delete0方法

Set實例提供的delete()方法用于刪除Set數(shù)據(jù)結(jié)構(gòu)中的某個值,它接收一個參數(shù)代表要刪除的值,返回一個布爾值,如果結(jié)果為true則表示刪除成功,為false則表示刪除失敗。演示delete()方法的使用

   <script>
    const s4 = new Set();
    s4.add('a').add('b');
    const r1 = s4.delete('a');
    console.log(s4.size);//輸出結(jié)果:1
    console.log(r1);     //輸出結(jié)果:true
   </script>

3.Set實例的has0方法

Set實例提供has()方法,該方法接收一個參數(shù)并判斷該參數(shù)是否為Set數(shù)據(jù)結(jié)構(gòu)中的成員,返回一個布爾值,如果結(jié)果為true則表示包含該成員,為false則表示不包含該成員。演示has()方法的使用:

   <script>
    const s4 = new Set();
    s4.add('a').add('b');
    const 
     r1 = s4.delete('a');
    console.log(s4.size);    //輸出結(jié)果:1
    console.log(r1);     //輸出結(jié)果:true
    const r2 = s4.has('a');
    console.log(r2);     //輸出結(jié)果:false
   </script>

4.Set實例的clear(0方法

Set實例提供的clear()方法用于清除Set數(shù)據(jù)結(jié)構(gòu)中的所有成員,該方法沒有返回值。演示clear0方法的使用:

   <script>
    const s4 = new Set();
    s4.add('a').add('b');
    es4.clear();
    console.log(s4.size);//輸出結(jié)果:0
   </script>

5.Set實例的遍歷方法

Set數(shù)據(jù)結(jié)構(gòu)的實例與數(shù)組一樣,也擁有一個forEachO方法,用于遍歷Set數(shù)據(jù)結(jié)構(gòu)中的成員,該方法可以對每個成員執(zhí)行某種操作,沒有返回值。演示forEach(0方法的使用:

  <script>
    const s5 = new Set(['a', 'b', 'c']);
    s5.forEach(value => {
     console.log(value);/∥/依次輸出a、b、c
    });
   </script>


分享到:
在線咨詢 我要報名
和我們在線交談!