set和map

set和map

set

ES6 新的数据结构 Set 类似于数组,但是成员的值都是唯一的,没有重复的值。
Set是一个构造函数,所以生成Set结构很简单,只需要new Set()即可,同时Set函数可以接受一个数组参数

// 利用Set结构成员值唯一的特性,可以轻松实现数组去重
let set = new Set([1,2,3,4,5,5,5])
[...set] // [1,2,3,4,5]
console.log(set.size); // size属性返回Set实例的成员总数,本例输出:5

Set结构实例有四个操作方法,分别是添加成员:add、删除成员:delete、判断该值是否为Set的成员:has、清楚所有的成员:clear

let set = new Set();
set.add(1).add(2).add(2) // 注意2被添加了2次
set.size // 2

set.has(2) // true
set.has(3) // false

set.delete(2);
set.has(2) // false

set.clear()
set.size // 0

Set结构还有4个遍历的方法,分别是keys方法、values方法、entries方法、forEach方法。

let set = new Set(['red', 'green', 'blue']);
set.keys(); // SetIterator {"red", "green", "blue"}
set.values(); // SetIterator {"red", "green", "blue"}
set.entries(); // SetIterator {"red" => "red", "green" => "green", "blue" => "blue"}
// 可以看到keys方法、values方法、entries方法返回的都是遍历器对象。由于Set结构键名和键值是同一个值,所以keys方法和values方法的行为是一致的。
set.forEach((value,key,s) => {
    console.log(key + ' : ' + value);
    console.log(s);
    // red : red
    // Set(3) {"red", "green", "blue"}
    // green : green
    // Set(3) {"red", "green", "blue"}
    // blue : blue
    // Set(3) {"red", "green", "blue"}
})
// 和数组的forEacch方法类似,Set结构的forEach方法同样接收三个参数,依次是键值、键名、集合本身。

map

ES6为什么要引入Map结构?因为传统的对象(Object)只能使用字符串当做键(key),为了解决这个问题,ES6 提供了 Map 数据结构。Map的键范围可以是各种类型的值。

const map = new Map();
const obj = {say: 'Hello World!'};
map.set(obj,'some string');
map.get(obj) // some string
// 对比传统的对象
const data = {};
data[obj] = 'some string';
data['[object Object]'] // some string

Map结构有如下的操作方法

const map = new Map();
const k1 = ['k1'];
// 添加成员:Map.prototype.set(key, value)
map.set(k1,'values'); 
// 读取成员:Map.prototype.get(key)
map.get(k1); // values
 // 判断键是否在Map对象中:Map.prototype.has(key)
map.has(k1); // true
// 删除某个键:Map.prototype.delete(key)
// 清空Map的所有成员:Map.prototype.clear()

Map的遍历方法和Set结构的一样,分别为keys方法、values方法、entries方法、forEach方法,这里就不再做赘述。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: ES6中的SetMap是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合。Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合。Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] SetMap都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,SetMapES6中新增的集合类型,Set用于存储无重复值的集合,Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的MapSet详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的setmap](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值