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