object結構提供了"字串——值"
map結構提供了"值——值"的對應,是一種更完善的hash結構實現
const m =
newmap()
;const o =;m.
set(o,
'content');
console.
log(m.
get(o)
,"has=>"
,m.has
(o),
"delete=>"
,m.delete
(o),
"has=>"
,m.has
(o))
;const map =
newmap([
['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()
)for
(let
[key,value]
of map)
擴充套件運算子…
const map2 =
newmap([
[1,'one'],
[2,'two'],
[3,'three']]
);console.
log(
...map2.
keys()
,...map2.
values()
,...map2.
entries()
,...map2)
;const map3 =
newmap()
.set(1
,'a').
set(2,
'b')
.set(3
,'c');
const map4 =
newmap([
...map3]
.filter((
[k,v]
)=> k >2)
);const map5 =
newmap([
...map3]
.map((
[k,v]
)=>
[k +1,
"_"+ v +
"_"]))
;console.
log(map4 ,map5)
;
map與其他資料結構的相互轉換
1.map轉陣列
const mymap =
newmap()
.set
(true,7
).set(,[
'abc'])
console.
log(
...mymap)
;
2.陣列轉mapconst arr =
[...mymap]
;console.
log(
newmap
(arr)
);
3.map轉物件const
= object;
strmaptoobj
=(strmap)
=>
return obj;
}const obj =
strmaptoobj
(mymap)
;console.
log(obj)
;
5.物件轉mapobjtostrmap
=(obj)
=>
return strmap;
}console.
log(
objtostrmap
(obj)
);
6.map轉jsonconst
=json
;strmaptojson
=(strmap)
=>
let json =
strmaptojson
(mymap)
;console.
log(json)
;
另一種情況是map的鍵名有非字串,可以選擇轉為陣列json
maptoarrayjson
=(map)
=>
let json2 =
maptoarrayjson
(mymap)
;console.
log(json2)
;
7.json轉map
正常情況下所有鍵名都是字串
jsontostrmap
=(jsonstr)
=>
const map1 =
jsontostrmap
(json)
;const map2 =
jsontostrmap
(json2)
;console.
log(map1,map2)
;
整個json是乙個陣列,陣列轉json逆操作
jsontomap
=(jsonstr)
=>
// const map3 = jsontomap(json);
const map4 =
jsontomap
(json2)
;console.
log(map4)
;
ES6個人筆記記錄 Symbol
es5 的物件屬性名都是字串,這容易造成屬性名的衝突 比如,我們使用了乙個他人提供的物件,但又想為這個物件新增新的方法cmixin 模式 新方法的名字就有可能與現有方法產生衝突。es6引入了一種新的原始資料型別symbol,表示獨一無二的值 是第七種資料型別 1.number 2.string 3....
ES6個人筆記記錄 陣列擴充套件
擴充套件運算子 console.log 1,2,3,4 5 es5 console.log math.max.null,14,2,48 es6 let math console.log max 14,2,48 es5 var arr1 0 1,2 var arr2 3 4,5 console.log...
ES6個人筆記記錄 Proxy2
1.getlet person let proxy1 newproxy person,else console.log proxy1.name,proxy1.age get方法可以被繼承 let proto newproxy const object const reflect let obj1 c...