摘要:與其他數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換僅作為一個學習筆記供往后翻閱轉(zhuǎn)為數(shù)組轉(zhuǎn)為數(shù)組最方便的方法,就是使用擴展運算符。對象轉(zhuǎn)為轉(zhuǎn)為轉(zhuǎn)為要區(qū)分兩種情況。轉(zhuǎn)為轉(zhuǎn)為,正常情況下,所有鍵名都是字符串。這往往是數(shù)組轉(zhuǎn)為的逆操作。
Map 與其他數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換
PS:僅作為一個學習筆記供往后翻閱!
(1)Map 轉(zhuǎn)為數(shù)組
Map 轉(zhuǎn)為數(shù)組最方便的方法,就是使用擴展運算符(...)。
const myMap = new Map() .set(true, 7) .set({foo: 3}, ["abc"]); [...myMap] // [ [ true, 7 ], [ { foo: 3 }, [ "abc" ] ] ]
(2)數(shù)組 轉(zhuǎn)為 Map
將數(shù)組傳入 Map 構(gòu)造函數(shù),就可以轉(zhuǎn)為 Map。
new Map([ [true, 7], [{foo: 3}, ["abc"]] ]) // Map { // true => 7, // Object {foo: 3} => ["abc"] // }
(3)Map 轉(zhuǎn)為對象
如果所有 Map 的鍵都是字符串,它可以轉(zhuǎn)為對象。
function strMapToObj(strMap) { let obj = Object.create(null); for (let [k,v] of strMap) { obj[k] = v; } return obj; } const myMap = new Map() .set("yes", true) .set("no", false); strMapToObj(myMap) // { yes: true, no: false }
(4)對象轉(zhuǎn)為 Map
function objToStrMap(obj) { let strMap = new Map(); for (let k of Object.keys(obj)) { strMap.set(k, obj[k]); } return strMap; } objToStrMap({yes: true, no: false}) // Map {"yes" => true, "no" => false}
(5)Map 轉(zhuǎn)為 JSON
Map 轉(zhuǎn)為 JSON 要區(qū)分兩種情況。一種情況是,Map 的鍵名都是字符串,這時可以選擇轉(zhuǎn)為對象 JSON。
function strMapToJson(strMap) { return JSON.stringify(strMapToObj(strMap)); } let myMap = new Map().set("yes", true).set("no", false); strMapToJson(myMap) // "{"yes":true,"no":false}"
另一種情況是,Map 的鍵名有非字符串,這時可以選擇轉(zhuǎn)為數(shù)組 JSON。
function mapToArrayJson(map) { return JSON.stringify([...map]); } let myMap = new Map().set(true, 7).set({foo: 3}, ["abc"]); mapToArrayJson(myMap) // "[[true,7],[{"foo":3},["abc"]]]"
(6)JSON 轉(zhuǎn)為 Map
JSON 轉(zhuǎn)為 Map,正常情況下,所有鍵名都是字符串。
function jsonToStrMap(jsonStr) { return objToStrMap(JSON.parse(jsonStr)); } jsonToStrMap("{"yes": true, "no": false}") // Map {"yes" => true, "no" => false}
但是,有一種特殊情況,整個 JSON 就是一個數(shù)組,且每個數(shù)組成員本身,又是一個有兩個成員的數(shù)組。這時,它可以一一對應地轉(zhuǎn)為 Map。這往往是數(shù)組轉(zhuǎn)為 JSON 的逆操作。
function jsonToMap(jsonStr) { return new Map(JSON.parse(jsonStr)); } jsonToMap("[[true,7],[{"foo":3},["abc"]]]") // Map {true => 7, Object {foo: 3} => ["abc"]}
來源于:http://es6.ruanyifeng.com/#do...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90647.html
摘要:學習筆記工作中常用到的語法只是簡單提及和,今天有空于是寫了這篇文章深入理解中的和數(shù)據(jù)結(jié)構(gòu),與其它數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換。的提供了新的數(shù)據(jù)結(jié)構(gòu)。本身是一個構(gòu)造函數(shù),用來生成數(shù)據(jù)結(jié)構(gòu)。 文中的內(nèi)容主要是來自于阮一峰的《ES6標準入門》(第三版)。《學習ES6筆記──工作中常用到的ES6語法》只是簡單提及Set和Map,今天有空于是寫了這篇文章──《深入理解:ES6中的Set和Map數(shù)據(jù)結(jié)構(gòu),M...
摘要:小明在一個方法內(nèi)部,是一個特殊變量,它始終指向當前對象,也就是這個變量。原型對象基于原型創(chuàng)建一個新對象初始化新對象小明小明 數(shù)據(jù)類型 數(shù)字字符串布爾:false和true數(shù)組對象null——空值undefined——未定義。僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下使用 字符串 用或者包括的叫字符串。轉(zhuǎn)義字符:toUpperCase()——轉(zhuǎn)換為大寫toLowerCase()——轉(zhuǎn)換為小寫in...
摘要:常被用來檢查對象中是否存在某個鍵名,集合常被用來獲取已存的信息。返回一個布爾值,表示該值在中存在與否。集合存放對象的弱引用,當該對象的其他強引用被清除時,集合中的弱引用也會自動被垃圾回收機制回收,追蹤成組的對象是該集合最好的使用方式。 Map和Set都叫做集合,但是他們也有所不同。Set常被用來檢查對象中是否存在某個鍵名,Map集合常被用來獲取已存的信息。 Set Set是有序列表,含...
摘要:前言做項目其實經(jīng)常需要與時間接觸。時間戳與時間的轉(zhuǎn)換問題,在這做一個記錄。我自己試了最新版的,,返回的是一樣的。 前言 做項目其實經(jīng)常需要與時間接觸。時間戳與時間的轉(zhuǎn)換問題,在這做一個記錄。 1.獲取特定格式的時間 myDate.getYear(); //獲取當前年份(2位) myDate.getFullYear(); //獲取完整的年份(4位,1970-????) myDate.ge...
閱讀 2468·2021-11-23 09:51
閱讀 1875·2021-10-13 09:40
閱讀 1396·2021-09-30 10:01
閱讀 600·2021-09-26 09:46
閱讀 2260·2021-09-23 11:55
閱讀 1405·2021-09-10 10:51
閱讀 2271·2021-09-09 09:33
閱讀 2238·2019-08-29 17:25