ES6個人筆記記錄 Map資料結構

2021-10-05 21:18:10 字數 3217 閱讀 9450

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.陣列轉map
const arr =

[...mymap]

;console.

log(

newmap

(arr)

);

3.map轉物件
const

= object;

strmaptoobj

=(strmap)

=>

return obj;

}const obj =

strmaptoobj

(mymap)

;console.

log(obj)

;

5.物件轉map
objtostrmap

=(obj)

=>

return strmap;

}console.

log(

objtostrmap

(obj)

);

6.map轉json
const

=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...