map 和 set 都是新类型 ,map的形式是一组键值对的结构,具有极快的查找速度。
初始化Map
需要一个二维数组,或者直接初始化一个空Map
new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); // 内部是二维数组
m.get('Michael'); // 95
// 或者 直接new Map()
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); 打印出来的结果类似于{键 =>值,键 =>值}
先来搞懂map的各种使用
1 . 先转化二维数组
Object.entries() 可以将对象转化为数组,每一个键值对作为数组里的两个值 [key, value]
console.log(
Object.entries({
label: 'xxxxxx',
}
)
)
// [['label','xxxxxx']]
console.log(
Object.entries({
label: 'xxxxxx',
aaa: 'bbbb',
}
)
)
// [['label','xxxxxx'],['aaa','bbbb']]
const real = {
1: 'q',
2: 'b',
3: 'c'}
console.log(
Object.entries({
enabled: {
label: 'xxxxxx',
value: false,
key: 'enabled',
},
aaaa: {
label: 'aaaaa',
value: [1,1].map((v, i) => real[i + 1])
,
key: 'aaaaa',
},
})
)
// [['enabled',{label: 'xxxxxx',value: false,key: 'enabled'}],
['aaa',{label: 'aaaaa',value: ['q', 'b'],key: 'aaaaa',}]
]
2. new Map 得到键值对,new map(二维数组)
console.log(new Map(Object.entries({
enabled: {
label: 'xxxxxx',
value: false,
key: 'enabled',
},
aaaa: {
label: 'aaaaa',
value: [1,1].map((v, i) => real[i + 1])
,
key: 'aaaaa',
},
}))
===================================================================
console.log(new Map([["enabled",{ label: "xxxxxx", value: false, key: "enabled" }], ["aaaa",{ label: "aaaaa", value: ["q", "b"], key: "aaaaa" }]]))
3. 如果你需要拿到值 去做一些数据处理可以用
const filter = new Map(Object.entries({
enabled: {
label: 'xxxxxx',
value: false,
key: 'enabled',
},
aaaa: {
label: 'aaaaa',
value: [1,1].map((v, i) => real[i + 1])
,
key: 'aaaaa',
},
}))
filter.values()
// 得到
{{label: 'xxxxxx',
value: false,
key: 'enabled'
},
{
label: 'aaaaa',
value: ['q','a'],
key: 'aaaaa',
}
}
4.可以解构放在数组里进行遍历
[...filter.values()]
// [{...}, {...}]