黄子涵

2.4.3 Map 常用属性及方法

1. size 属性

size 属性返回 Map 结构的成员总数。

示例26
const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
console.log("hzhMap成员总数:");
console.log(hzhMap.size);
[Running] node "e:\HMV\JavaScript\JavaScript.js"
hzhMap成员总数:
3

[Done] exited with code=0 in 0.173 seconds

2. set 和 get 方战

set 方法设置键名 key 对应的键值为 value,然后返回整个 Map 结构。如果 key 已经有对应的键值,则键值会被更新,否则就新生成键值。则方法返回的是当前的 Map 对象,因此可以采用链式写法。

示例27
const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
hzhMap.set('singer',['周杰伦', '蔡依林']).set('edition', 6);
console.log(hzhMap);
[Running] node "e:\HMV\JavaScript\JavaScript.js"
Map {
  'name' => '黄子涵',
  'brother' => '黄春钦',
  'mother' => '陈兰英',
  'singer' => [ '周杰伦', '蔡依林' ],
  'edition' => 6
}

[Done] exited with code=0 in 0.254 seconds

get 方法读取 key 对应的键值,如果找不到 key,则返回 undefined 。

示例28

const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
hzhMap.set('singer',['周杰伦', '蔡依林']).set('edition', 6);
console.log("使用get方法读取name的键值:");
console.log(hzhMap.get('name'));
console.log("");
console.log("使用get方法读取brother的键值:");
console.log(hzhMap.get('brother'));
console.log("");
console.log("使用get方法读取mother的键值:");
console.log(hzhMap.get('mother'));
[Running] node "e:\HMV\JavaScript\JavaScript.js"
使用get方法读取name的键值:
黄子涵

使用get方法读取brother的键值:
黄春钦

使用get方法读取mother的键值:
陈兰英

[Done] exited with code=0 in 0.2 seconds

3. has 方法

has 方法返回一个布尔值,判断某个键是否在当前 Map 对象之中。

示例 29
const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
hzhMap.set('singer',['周杰伦', '蔡依林']).set('edition', 6);
console.log("判断name键是否在Map对象之中:");
console.log(hzhMap.has('name'));
console.log("");
console.log("判断brother键是否在Map对象之中:");
console.log(hzhMap.has('brother'));
console.log("");
console.log("判断mother键是否在Map对象之中:");
console.log(hzhMap.has('mother'));
console.log("");
console.log("判断edition键是否在Map对象之中:");
console.log(hzhMap.has('edition'));
console.log("");
console.log("判断father键是否在Map对象之中:");
console.log(hzhMap.has('father'));
[Running] node "e:\HMV\JavaScript\JavaScript.js"
判断name键是否在Map对象之中:
true

判断brother键是否在Map对象之中:
true

判断mother键是否在Map对象之中:
true

判断edition键是否在Map对象之中:
true

判断father键是否在Map对象之中:
false

[Done] exited with code=0 in 0.339 seconds

4. delete 方法

delete 方法删除某个键,如果删除成功,返回 true;如果删除失败,返回 false。如示例30如所示。

示例 30
const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
hzhMap.set('singer',['周杰伦', '蔡依林']).set('edition', 6);
console.log("使用delete方法读取edition键:");
console.log(hzhMap.delete('edition'));
console.log("");
console.log("使用delete方法读取father的键值:");
console.log(hzhMap.get('father'));
console.log("");
console.log("打印hzhMap:");
console.log(hzhMap);
[Running] node "e:\HMV\JavaScript\JavaScript.js"
使用delete方法读取edition键:
true

使用delete方法读取father的键值:
undefined

打印hzhMap:
Map {
  'name' => '黄子涵',
  'brother' => '黄春钦',
  'mother' => '陈兰英',
  'singer' => [ '周杰伦', '蔡依林' ]
}

[Done] exited with code=0 in 0.318 seconds

5. 遍历方法

Map 结构原生提供 3 个遍历器生成函数和 1 个遍历方法。具体使用方法查看示例 31 。
keys():返回键名 的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器 。
for Each():遍历 Map 的所有成员。

示例 31
const hzhMap = new Map ([
    ['name', '黄子涵'],
    ['brother', '黄春钦'],
    ['mother', '陈兰英']
]);
console.log("遍历输出键名:");
for(let key of hzhMap.keys()) {
    console.log(key);
}
console.log("");
console.log("遍历输出键值:");
for(let value of hzhMap.values()) {
    console.log(value);
}
console.log("");
console.log("遍历输出键名和键值:");
for(let [key, value] of hzhMap.entries()) {
console.log(key, value);
}
console.log("");
console.log("遍历输出键名和键值:");
hzhMap.forEach(function(value,index){
    console.log(index + ":" + value);
})
[Running] node "e:\HMV\JavaScript\JavaScript.js"
遍历输出键名:
name
brother
mother

遍历输出键值:
黄子涵
黄春钦
陈兰英

遍历输出键名和键值:
name 黄子涵
brother 黄春钦
mother 陈兰英

遍历输出键名和键值:
name:黄子涵
brother:黄春钦
mother:陈兰英

[Done] exited with code=0 in 1.031 seconds
posted @ 2022-06-09 16:28  黄子涵  阅读(135)  评论(0编辑  收藏  举报