Map - 与其他数据结构的互相转换
Posted blogzhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map - 与其他数据结构的互相转换相关的知识,希望对你有一定的参考价值。
Map 转为数组
const myMap = new Map()
.set(true, 7)
.set({foo: 3}, [‘abc‘]);
[...myMap] // 使用扩展运算符(...
)
// [ [ true, 7 ], [ { foo: 3 }, [ ‘abc‘ ] ] ]
数组 转为 Map
new Map([ [true, 7], [{foo: 3}, [‘abc‘]] ]) // Map { // true => 7, // Object {foo: 3} => [‘abc‘] // }
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 } 如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名
对象转为 Map
let obj = {"a":1, "b":2};
let map = new Map(Object.entries(obj));
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}
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"]]]‘
JSON 转为 Map
function jsonToStrMap(jsonStr) { return objToStrMap(JSON.parse(jsonStr)); } jsonToStrMap(‘{"yes": true, "no": false}‘) // Map {‘yes‘ => true, ‘no‘ => false}
以上是关于Map - 与其他数据结构的互相转换的主要内容,如果未能解决你的问题,请参考以下文章
spark dataframe 和 scala Map互相转换