ES 6個人メモ――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は1つの配列で、配列はJSONを回転します.
jsonToMap = (jsonStr) => {
     
	return new Map(parse(jsonStr));
}

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