(1)Map 转为数组
const map = new Map([
['name','张三'],
[1,'one'],
[2,'two'],
[3,'three'],
]);
console.log(map);//{'name' => '张三', 1 => 'one', 2 => 'two', 3 => 'three'}
let map0 = [...map.keys()];
console.log(map0); //['name', 1, 2, 3]
let map1 = [...map.values()];
console.log(map1); //['张三', 'one', 'two', 'three']
let map2 = [...map.entries()];
console.log(map2); //[Array(2), Array(2), Array(2), Array(2)]
//0: (2) ['name', '张三']
//1: (2) [1, 'one']
//2: (2) [2, 'two']
//3: (2) [3, 'three']
// length: 4
(2)数组 转为 Map
let str = [[1,'one'],[2,'two'],[3,'three'],];
let str0 = new Map(str);
console.log(str0); // {1 => 'one', 2 => 'two', 3 => 'three'}
(3)Map 转为对象
function strMapToObj(strMap){
let obj = Object.create(null);
for(let [k,v] of strMap){
obj[k] = v;
}
return obj ;
}
const myMap =new Map([
['name','张三'],
['address','china'],
]);
console.log(strMapToObj(myMap)); //{name: '张三', address: 'china'}
(4)对象转为 Map
// 转换过程:obj ==>数组==>map (对象转为 Map 可以通过`Object.entries()`。 Object.keys() //返回对象的键名 Object.entries() //以数组形式返回对象的键值对)
let objToMap = {
'a':1,
'b':2,
'name':'张三丰'
}
let ToArry = Object.entries(objToMap);//(转成数组)
let ToMap = new Map(ToArry); //(转成map)
console.log(ToMap); //{'a' => 1, 'b' => 2, 'name' => '张三丰'}
// 此外,也可以自己实现一个转换函数。
function objToStrMap(obj){
let strMap = new Map();
for(let k of Object.keys(obj)){
strMap.set(k,obj[k]);
}
return strMap ;
}
let objStr = {
'name':'李斯思',
'age':18
}
console.log(objToStrMap(objStr)); //{'name' => '李斯思', 'age' => 18}
(5)Map 转为 JSON
// 转换过程:map==>obj==>json
function strTOJosn(strMap){
let obj = Object.create(null);
for(let [k,v] of strMap){
obj[k] = v ;
}
return obj ;
}
function strTOJosn0(strMap){
// JSON.stringify: 对象转字符串
return JSON.stringify(strTOJosn(strMap));
}
let strMap0 = new Map().set('yes',true).set('no',false);
console.log(strTOJosn0(strMap0)); //{"yes":true,"no":false}
(6)JSON 转为 Map
// 转换过程:json==>obj===>map (JSON 转为 Map,正常情况下,所有键名都是字符串。)
function objToMap1(obj){
let strMap = new Map();
for(let k of Object.keys(obj)){
strMap.set(k,obj[k]);
}
return strMap ;
}
function josnToMap(josnStr){
// JSON.parse:字符串转对象
return objToMap1(JSON.parse(josnStr));
}
let josnStr = '{"哈哈": true, "伤心": false}';
console.log(objToMap1(josnStr)); //{'0' => '{', '1' => '"', '2' => '哈', '3' => '哈', '4' => '"', …}
console.log(josnToMap(josnStr)); //{'哈哈' => true, '伤心' => false}