ES6个人笔记记录——Map数据结构

Object结构提供了"字符串——值"
Map结构提供了"值——值"的对应,是一种更完善的Hash结构实现

const m = new Map();
const o = {
     
	p : 'Hello World'
};
m.set(o, 'content');
console.log(m.get(o),
	"has=>",m.has(o),
	"delete=>",m.delete(o),
	"has=>",m.has(o));

const map = new Map([
	['name' , 'hejie'],
	['title' , '设计模式']
]);

console.log(map.size,map.get('title'));
map.set("age","20").set("city","陕西");
console.log(map.get('age'),map.has('city'));

方法

和之前一样
keys(),values(),entries(),forEach()
for(let [key,value] of map.entries()){
     
	console.log(key,"---",value);
}

for(let [key,value] of map){
     
	console.log(key,"---",value);
}

扩展运算符…

const map2 = new Map([
	[1 , 'one'],
	[2 , 'two'],
	[3, 'three']
]);

console.log(...map2.keys(),...map2.values(),...map2.entries(),...map2);

const map3 = new Map()
	.set(1 , 'a')
	.set(2 , 'b')
	.set(3 , 'c');

const map4 = new Map([...map3].filter(([k,v]) => k > 2));
const map5 = new Map([...map3].map(([k,v]) => [k + 1,"_" + v + "_"]));
console.log(map4 ,map5);

Map与其他数据结构的相互转换

1.Map转数组

const myMap = new Map()
	.set(true , 7)
	.set({
     foo : 3} , ['abc'])
console.log(...myMap);

2.数组转Map

const arr = [...myMap];
console.log(new Map(arr));

3.Map转对象

const {
      create , keys } = Object;
strMapToObj = (strMap) => {
     
	let obj = create(null);
	for(let [k,v] of strMap){
     
		obj[k] = v;
	}
	return obj;
}

const obj = strMapToObj(myMap);
console.log(obj);

5.对象转Map

objToStrMap = (obj) => {
     
	let strMap = new Map();
	for(let k of keys(obj)){
     
		strMap.set(k , obj[k]);
	}
	return strMap;
}
console.log(objToStrMap(obj));

6.Map转JSON

const {
      stringify , parse } = JSON;
strMapToJson = (strMap) => {
     
	return stringify(strMapToObj(strMap));
}

let json = strMapToJson(myMap);
console.log(json);

另一种情况是Map的键名有非字符串,可以选择转为数组JSON

mapToArrayJson = (map) => {
     
	return stringify([...map]);
}

let json2 = mapToArrayJson(myMap);
console.log(json2);

7.JSON转Map

正常情况下所有键名都是字符串

jsonToStrMap = (jsonStr) => {
     
	return objToStrMap(parse(jsonStr));
}

const map1 = jsonToStrMap(json);
const map2 = jsonToStrMap(json2);
console.log(map1,map2);

整个JSON是一个数组,数组转JSON逆操作

jsonToMap = (jsonStr) => {
     
	return new Map(parse(jsonStr));
}

// const map3 = jsonToMap(json);
const map4 = jsonToMap(json2);
console.log(map4);

你可能感兴趣的:(javascript,前端学习)