成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS筆記!Map 與其他數(shù)據(jù)結(jié)構(gòu)的互相轉(zhuǎn)換

Jenny_Tong / 2041人閱讀

摘要:與其他數(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

相關文章

  • 深入理解:ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)Map其它數(shù)據(jù)結(jié)構(gòu)互相轉(zhuǎn)換

    摘要:學習筆記工作中常用到的語法只是簡單提及和,今天有空于是寫了這篇文章深入理解中的和數(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...

    Cristalven 評論0 收藏0
  • js學習筆記

    摘要:小明在一個方法內(nèi)部,是一個特殊變量,它始終指向當前對象,也就是這個變量。原型對象基于原型創(chuàng)建一個新對象初始化新對象小明小明 數(shù)據(jù)類型 數(shù)字字符串布爾:false和true數(shù)組對象null——空值undefined——未定義。僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下使用 字符串 用或者包括的叫字符串。轉(zhuǎn)義字符:toUpperCase()——轉(zhuǎn)換為大寫toLowerCase()——轉(zhuǎn)換為小寫in...

    MiracleWong 評論0 收藏0
  • 《深入理解ES6》筆記——Set集合Map集合(7)

    摘要:常被用來檢查對象中是否存在某個鍵名,集合常被用來獲取已存的信息。返回一個布爾值,表示該值在中存在與否。集合存放對象的弱引用,當該對象的其他強引用被清除時,集合中的弱引用也會自動被垃圾回收機制回收,追蹤成組的對象是該集合最好的使用方式。 Map和Set都叫做集合,但是他們也有所不同。Set常被用來檢查對象中是否存在某個鍵名,Map集合常被用來獲取已存的信息。 Set Set是有序列表,含...

    Charlie_Jade 評論0 收藏0
  • js常用時間戳互相轉(zhuǎn)換方法,以及一些其它相關時間方法。

    摘要:前言做項目其實經(jīng)常需要與時間接觸。時間戳與時間的轉(zhuǎn)換問題,在這做一個記錄。我自己試了最新版的,,返回的是一樣的。 前言 做項目其實經(jīng)常需要與時間接觸。時間戳與時間的轉(zhuǎn)換問題,在這做一個記錄。 1.獲取特定格式的時間 myDate.getYear(); //獲取當前年份(2位) myDate.getFullYear(); //獲取完整的年份(4位,1970-????) myDate.ge...

    李昌杰 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<