javaScript基础--Map and Set(映射和集合)

本文介绍了JavaScript中的Map对象,包括其创建、基本操作(如set、get、has、delete和clear),链式调用以及迭代方法。同时讨论了Map与对象的相互转换,以及Set的独特性质如去重和遍历。
摘要由CSDN通过智能技术生成

Map

Map是一个带有键值的属性集合,类似Object。不同的是Map的键值可以是任意类型。包括可以使用Object对象作为键值。

Map相关api

new Map() 创建map

map.set(key,value) 保存/修改属性和键值

map.get(key) 获取属性值

map.has(key) 如果key存在返回true,否则返回false

map.delete(key) 删除指定键值对

map.clear() 清空map

map.size() 返回当前元素个数

let obj = new Map()
obj.set('hehe','wocao')
obj.set(1,2)
obj.set('fn',function(){return 1})
obj.delete(1)
console.log(obj,obj.get(1),obj.size)//Map(2) {'hehe' => 'wocao', 'fn' => ƒ},undefined,2

链式调用

map.set每次调用都会返回自身,所以当我们需要保存多个参数的时候,可以使用链式调用。

map.set('1', 'str1') .set(1, 'num1') .set(true, 'bool1');

Map迭代

map.keys()代表map的所有键值集合

map.values()代表map的所有属性值的集合

map.entries = map 本身

let recipeMap = new Map([
  ['cucumber', 500],
  ['tomatoes', 350],
  ['onion',    50]
]);

// 遍历所有的键(vegetables)
for (let vegetable of recipeMap.keys()) {
  console.log(vegetable); // cucumber, tomatoes, onion
}

// 遍历所有的值(amounts)
for (let amount of recipeMap.values()) {
  console.log(amount); // 500, 350, 50
}

// 遍历所有的实体 [key, value]
for (let entry of recipeMap) { // 与 recipeMap.entries() 相同
  console.log(entry); // cucumber,500 (and so on)
}

对象和Map的相互成就

我们可以使用map来创建对象,也可以使用对象来创建map

Object.entries(object)//使用object创建map
Object.fromEntries(map)//使用map创建object
let obj = {
  name: "John",
  age: 30
};
let map = new Map(Object.entries(obj))
let obj1 = Object.fromEntries(map)
console.log(obj1)

set

set是一个特殊的类型集合,值的集合,没有键。个人理解下来就是一个长成对象样子的数组,只是将对象变成了set的值。

new Set(iterable) 创建一个 set,如果提供了一个 iterable 对象(通常是数组),将会从数组里面复制值到 set 中。

setName.add(value) 添加一个值,返回set本身,所以也可以使用链式方式使用

setName.delete(value) 删除一个value

setName.has(value)判断value是否存在,有返回true,没有返回false,类似对象的hasOwn

set.clear() 清空set

set.size 返回元素个数(但是set只保存不重复的,所以这个值是去重后的值)

let set = new Set();

let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };

// visits,一些访客来访好几次
set.add(john);
set.add(pete);
set.add(mary);
set.add(john);
set.add(mary);

// set 只保留不重复的值
console.log( set.size ); // 3
console.log(set)
//Set(3) {{…}, {…}, {…}}
//0: 
//    value: {name: 'John'}
//1:
//    value: {name: 'Pete'}
//2: 
//    value: {name: 'Mary'}

遍历

可以使用for...of或者forEach进行set的遍历。另外Map遍历的时候的方法set里也同样适用。set.keys,set.values,set.entries

for (let val of set)
{
	console.log(val)
}
set.forEach(item=>{
	console.log(item)
})

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值