<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 集合 集合對象類似于以前JavaScript中的數組,只是集合對象中不能存在相同的對象。 ## 集合的初始化 集合對象是通過構造函數進行初始化的,調用格式有2種 * 不傳參數給構造函數,這將創建一個空的集合對象 ```javascript var sampleSet = new Set(); console.log(sampleSet.size); //will output 0 ``` * 傳遞一個數組對象給構造函數,將創建一個包含這個數組中不重復內容的集合 ```javascript var sampleSet = new Set([1,2,3,4,5,5,6]); console.log(sampleSet.size);//will output 6 console.log(sampleSet);//will ouput Set {1,2,3,4,5,6} ``` ## 向集合添加內容 可以通過使用集合對象的add方法向已經創建的集合添加新的內容 ```javascript var sampleSet = new Set(); sampleSet.add(2); sampleSet.add('2'); console.log(sampleSet.size); //will output 2 console.log(sampleSet); //will output Set { 2, '2' } //例子2 var sampleSet = new Set(); sampleSet.add(NaN); sampleSet.add(NaN); console.log(sampleSet); //will output Set { NaN } ``` 從上面程序的輸出,可以看出 * 集合可以保存不同類型的數據 * 在向集合添加數據的時候,JavaScript并不進行數據轉化。因此2和'2'是不一樣的 * 對集合對象來說,所有的NaN都是一樣的 ## 向集合添加對象 我們之所以將向集合添加對象單獨出來解釋,是因為對對象是否相同的判斷和普通對象不一樣。下面是幾個例子。 ```javascript //例子1 var sampleSet = new Set(); var a = {}; var a1 = a; //因為a和a1在底層指向的是同一個內存對象,所以a === a1 sampleSet.add(a); sampleSet.add(a1); console.log(sampleSet); //will output Set { {} } //例子2 var sampleSet = new Set(); var a = {}; var a1 = {}; //因為a和a1在底層指向的是不同的內存對象,所以a != a1 sampleSet.add(a); sampleSet.add(a1); console.log(sampleSet); //will output Set Set { {}, {} } ``` ## 集合的其他操作 除了向已經存在的集合添加內容,你還可以通過集合的成員函數實施下面的操作 * 刪除內容,通過```delete(value)```來刪除集合中的某個內容 * 判斷集合是否包含內容,通過```has(value)```來判斷集合中是否包含參數所指定的內容 * 清除所有內容,通過```clear()```你可以刪除一個集合中的所有內容 ## 集合對象的遍歷 遍歷集合對象最簡單的方法就是遍歷```values()```方法的返回值,下面是一個具體的例子 ```javascript 'use strict'; var sampleSet = new Set([1,2,3,4,5]); //output is //1 //2 //3 //4 //5 for (let val of sampleSet.values()){ console.log(val); } ``` 遍歷集合的第二個方法是條用```forEach```函數完成,下面是具體的例子。對于這個例子,大家一定很奇怪,為什么forEach接受的函數的參數是2個。對于這點我一開始也覺得很奇怪,在看了相關的文檔才明白,實際上對于集合中的每個元素,都有2個屬性與之綁定(Key和value),只不過他們完全相同而已,我個人估計是為了和映射對象保持類似的結構,從而簡化Javascript引擎而這么做的。 ```javascript var sampleSet = new Set([1,2,3,4,5]); //output is //1 //2 //3 //4 //5 //實際上你用console.log(key)也會得到完全一樣的結果 sampleSet.forEach((value, key) => {console.log(value);}); ``` # 弱集合 弱集合對象和普通的集合對象有著下面這些不同點: * 弱集合對象只能保存對象,不能保存普通數據 * 弱集合對象對另外一個對象的引用,并不影響垃圾回收器的工作。換句話說,如果一個弱集合```set```包含一個對象```a```的引用,如果在運行過程中,除了這個應用,沒有任何其他地方應用```a```這個對象了,那么垃圾回收器將回收```a```。 * 弱集合對象沒有```size```屬性,也不能進行遍歷。不能進行遍歷的原因就是因為第二點。因為在遍歷的過程中,集合中的對象隨時可能被垃圾回收器給回收。 ## 可以執行的操作 根據上面的描述,對弱集合對象可以進行的操作僅限于。 * 增加成員,使用```add()```方法增加成員 * 刪除成員, 使用```delete()```方法刪除成員 * 判斷成員是否在集合,使用```has()```方法判斷一個成員是否存在 ## 弱集合的使用 弱集合的一個使用場合是你需要操作DOM的一個集合,但是你不想因為集合擁有對DOM對象的引用而阻止對DOM對象的自動銷毀。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看