<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                >[success] # Map 集合 ~~~ 1.Map 和 Object 很像,Map 也類似于對象,也是鍵值對的集合, 但是'鍵'的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵。也 就是說,Object 結構提供了'字符串—值'的對應,Map 結構提供了'值—值'的對應, ~~~ >[info] ## 使用Map ~~~ 1.'Map' 是構造函數,因此創建的時候需要'new' 一個實例 ~~~ >[danger] ##### 注意說明 ~~~ 1.即使Map 和Object在某些地方很像,但是Map也不可以像Object那樣通過'點'和'[]' 取值value,還是需要遵循Map自己的存取方式 ~~~ >[danger] ##### 創建Map/賦值Map/取值Map --- new / set/get ? ~~~ 1.下面的案例可以看出Map和Objec 最大的不同可以接受非字符串作為key, 即使在有些情況下看到一些非字符串作為了Object 的key,但要注意他們會 偷偷執行key的toString方法轉換成字符串,但是Map不會 2.賦值使用'set',第一參數是key 第二個參數是value, ~~~ ~~~ let map = new Map() key1 = {} key2 = {} map.set(key1,1) map.set(key2,2) console.log(map.get(key1)) // 1 console.log(map.get(key2)) // 2 ~~~ >[danger] ##### 判斷Map中的Key 是否存在/清除集合中內容 -- has 返回是true 和false / delete、clear ~~~ (1)has(key)檢測指定的鍵名在Map集合中是否已經存在 (2)delete(key)從Map集合中移除指定鍵名及其對應的值 (3)clear()移除Map集合中的所有鍵值對 ~~~ ~~~ let map = new Map(); map.set("name", "huochai"); map.set("age", 25); console.log(map.size); // 2 console.log(map.has("name")); // true console.log(map.get("name")); // "huochai" console.log(map.has("age")); // true console.log(map.get("age")); // 25 map.delete("name"); console.log(map.has("name")); // false console.log(map.get("name")); // undefined console.log(map.size); // 1 map.clear(); console.log(map.has("name")); // false console.log(map.get("name")); // undefined console.log(map.has("age")); // false console.log(map.get("age")); // undefined console.log(map.size); // 0 ~~~ >[danger] ##### 通過構造函數傳參形式初始map ~~~ let map = new Map([["name",'wang'],['age',19]]) console.log(map) // Map(2)?{"name" => "wang", "age" => 19} ~~~ >[danger] ##### map 的長度 屬性是 -- size >[danger] 遍歷方法 ~~~ 1. 要注意Map便利要用of Map.prototype.keys():返回鍵名的遍歷器。 Map.prototype.values():返回鍵值的遍歷器。 Map.prototype.entries():返回所有成員的遍歷器。 Map.prototype.forEach():遍歷 Map 的所有成員。 ~~~ ~~~javascript const map = new Map([ ['F', 'no'], ['T', 'yes'], ]); for (let key of map.keys()) { console.log(key); } // "F" // "T" for (let value of map.values()) { console.log(value); } // "no" // "yes" for (let item of map.entries()) { console.log(item[0], item[1]); } // "F" "no" // "T" "yes" // 或者 for (let [key, value] of map.entries()) { console.log(key, value); } // "F" "no" // "T" "yes" // 等同于使用map.entries() for (let [key, value] of map) { console.log(key, value); } // "F" "no" // "T" "yes" ~~~ * Map 和數組直接轉換詳細可以直接參考[阮一峰](http://es6.ruanyifeng.com/#docs/set-map) * 簡單的轉換案例 ~~~javascript const map = new Map([ [1, 'one'], [2, 'two'], [3, 'three'], ]); [...map.keys()] // [1, 2, 3] [...map.values()] // ['one', 'two', 'three'] [...map.entries()] // [[1,'one'], [2, 'two'], [3, 'three']] [數組新功能](%E6%95%B0%E7%BB%84%E6%96%B0%E5%8A%9F%E8%83%BD.md) [...map] // [[1,'one'], [2, 'two'], [3, 'three']] ~~~ >[info] ## WeakMap 直接參考阮一峰老師文章即可 1. **WeakMap的key只能使用對象,不接受其他的類型作為key** 2. WeakMap的key對對象想的引用是弱引用,如果沒有其他引用引用這個對象,那么GC可以回收該對象 3. 常用的方法 ~~~ set(key, value):在Map中添加key、value,并且返回整個Map對象; get(key):根據key獲取Map中的value; has(key):判斷是否包括某一個key,返回Boolean類型; delete(key):根據key刪除一個鍵值對,返回Boolean類型; ~~~ ?* [阮一峰](http://es6.ruanyifeng.com/#docs/set-map) >[info] ## 總結 ~~~ 要在WeakMap集合與普通的Map集合之間做出選擇時,需要考慮的主要問題是, 是否只用對象作為集合的鍵名。如果是,那么Weak Map集合是最好的選擇。 當數據再也不可訪問后,集合中存儲的相關引用和數據都會被自動回收, 這有效地避免了內存泄露的問題,從而優化了內存的使用   相對Map集合而言,WeakMap集合對用戶的可見度更低,其不支持通過forEach()方法、 size屬性及clear()方法來管理集合中的元素。如果非常需要這些特性,那么Map集合是一個 更好的選擇,只是一定要留意內存的使用情況   當然,如果只想使用非對象作為鍵名,那么普通的Map集合是唯一的選擇 ~~~
                  <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>

                              哎呀哎呀视频在线观看