マップとオブジェクトの簡単な区別
MapはES6で廃止された型 特徴:任意の値をプロパティ名として使用可能
オブジェクトの特徴: 属性名は文字列のみにすることができます (最初は信じられませんでしたが、テスト後にわかりました)
コード | 写真 |
---|---|
マップタイプを作成する
new Map([
[key, value],
[key1, value1]
])
以下の2つの方法を簡単に紹介します
- Object.entries()メソッドは、パラメーター オブジェクト自体のすべての走査可能な (列挙可能な) プロパティ (継承されたものを除く) のキーと値のペアをメンバーとする配列を返します。
- Object.fromEntries()メソッドは、キーと値のペアの配列をオブジェクトに変換するために使用されるObject.entries()の逆演算です。
オブジェクトタイプからマップタイプへ
ここでは主に Object.entries の特性が使用されます。Object.entries
は、配列の最初の値がキー、2 番目の値が値である 2 次元配列を返します。
const obj = {
a: '我是obj.a',
b: '我是obj.b',
c: '我是obj.c',
}
console.log(obj)
const map = new Map(Object.entries(obj))
console.log(map)
console.log(map.get('a'), '我是map 属性名')
console.log(map.get('b'), '我是map 属性名')
型をオブジェクト型にマップする
const arr = [1, 2, 3],
obj = {
a: '1', b: 2 },
number = 22
const map = new Map()
map.set(arr, '我是map的第1个值,我是数组')
map.set(obj, '我是map的第2个值,我是对象')
map.set(number, '我是map的第3个值, 我是简单数据类型')
const newObj = Object.fromEntries(map.entries())
console.log(newObj, '我是新对象')
console.log('新对象类型', typeof newObj)