ES 6個人メモ――Mapデータ構造
23445 ワード
Object構造は「文字列——値」Map構造に「値——値」の対応を提供し、より完璧なHash構造の実現である.
1.Map回転配列
通常はすべてのキー名が文字列です.
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.配列変換Mapconst 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);