<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] # JS 字典 ~~~ 1.字典是一種[鍵,值]對的形式來存儲數據結構,這么感覺和js 對象沒有太大的區別 ,但實際區別字典的建也是可以為對象,就類似js 中的Map 一樣 ~~~ >[danger] ##### 案例看一下js對象和Map最大的區別 ~~~ const obj = {} const keyA = {'a':1} const keyB ={'b':1} obj[keyA] = 2 obj[keyB] = 3 console.log(obj[keyA]) // 3 因為對象的key 都是toString 類型 const map = new Map() map.set(keyA,2) map.set(keyB,3) console.log(map.get(keyA)) // 2 ~~~ >[info] ## 自己實現一個字典 ~~~ 1.字典和Map很像,都是可以存儲鍵值對的形式,實現一個dic 字典類 ~~~ >[danger] ##### 實現字典的方法 ~~~ 1.set(key,value):向字典中添加新元素。如果 key 已經存在,那么已存在的 value 會 被新的值覆蓋。 2.remove(key):通過使用鍵值作為參數來從字典中移除鍵值對應的數據值。 3.hasKey(key):如果某個鍵值存在于該字典中,返回 true,否則返回 false。 4.get(key):通過以鍵值作為參數查找特定的數值并返回。 5.clear():刪除該字典中的所有值。 6.size():返回字典所包含值的數量。與數組的 length 屬性類似。 7.isEmpty():在 size 等于零的時候返回 true,否則返回 false。 8.keys():將字典所包含的所有鍵名以數組形式返回。 9.values():將字典所包含的所有數值以數組形式返回。 10.keyValues():將字典中所有[鍵,值]對返回。 11.forEach(callbackFn):迭代字典中所有的鍵值對。callbackFn 有兩個參數:key 和 value。該方法可以在回調函數返回 false 時被中止(和 Array 類中的 every 方法相似)。 ~~~ >[danger] ##### 代碼實現 ~~~ 1.要注意我們實現的字典依然是無法將不同對象根據key 來區分,如果想實際區分需要手動重寫 要作為對象key 的toString 方法 2.存儲的格式'{key:{key:key,value:value}}' 3.defaultToString 方法會專門將key 轉換成字符串的方法 4.ValuePair 專門保存整個key value 形成對象的方法 ~~~ ![](https://img.kancloud.cn/9d/18/9d18d7993b7244c47673c0fb732888c8_357x113.png) ~~~ function defaultToString(item) { if (item === null) { return 'NULL'; } if (item === undefined) { return 'UNDEFINED'; } if (typeof item === 'string' || item instanceof String) { return `${item}`; } return item.toString(); } class ValuePair { constructor(key, value) { this.key = key; this.value = value; } toString() { return `[#${this.key}: ${this.value}]`; } } class Dictionary { constructor(toStrFn = defaultToString) { this.toStrFn = toStrFn; this.table = {}; } set(key, value) { if (key != null && value != null) { const tableKey = this.toStrFn(key); this.table[tableKey] = new ValuePair(key, value); return true; } return false; } get(key) { const valuePair = this.table[this.toStrFn(key)]; return valuePair == null ? undefined : valuePair.value; } hasKey(key) { return this.table[this.toStrFn(key)] != null; } remove(key) { if (this.hasKey(key)) { delete this.table[this.toStrFn(key)]; return true; } return false; } values() { return this.keyValues().map(valuePair => valuePair.value); } keys() { return this.keyValues().map(valuePair => valuePair.key); } keyValues() { return Object.values(this.table); } forEach(callbackFn) { const valuePairs = this.keyValues(); for (let i = 0; i < valuePairs.length; i++) { const result = callbackFn(valuePairs[i].key, valuePairs[i].value); if (result === false) { break; } } } isEmpty() { return this.size() === 0; } size() { return Object.keys(this.table).length; } clear() { this.table = {}; } toString() { if (this.isEmpty()) { return ''; } const valuePairs = this.keyValues(); let objString = `${valuePairs[0].toString()}`; for (let i = 1; i < valuePairs.length; i++) { objString = `${objString},${valuePairs[i].toString()}`; } return objString; } } ~~~
                  <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>

                              哎呀哎呀视频在线观看