新增数据结构
1 Set
1.1 什么是Set
- ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set
本身是一个构造函数,用来生成 Set 数据结构。Set
函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化
let st = new Set([1, 2, 3, 4, 4, 3, 3, 1, 5]);
console.log(st);
1.2 Set的属性及方法
- size 返回Set的长度
- add 添加某个值,返回 Set 结构本身。
- delete 删除某个值,返回一个布尔值,表示删除是否成功。
- has 返回一个布尔值,表示该值是否为
Set
的成员 - clear 清除所有成员,没有返回值。
keys()
:返回键名的遍历器,由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys
方法和values
方法的行为完全一致。values()
:返回键值的遍历器entries()
:返回键值对的遍历器forEach()
:使用回调函数遍历每个成员
// 2.属性 size
console.log(st.size);
//3.添加 add
st.add(4);
st.add(10);
st.add("hoo");
console.log(st);
//4.删除
st.delete(2);
console.log(st);
//5.判断是否存在某个元素
console.log(st.has(10));
console.log(st.has(11));
//6.清空所有的
// st.clear();
// console.log(st);
//7.和循环遍历相关的方法 keys方法和valus方法行为是一致的
let st2 = new Set(["a", "b", "c", "d"]);
console.log(st2.keys())//"a","b","c","d"
console.log(st2.values())//"a","b","c","d"
for (let a of st2) {
console.log(a); //"a", "b", "c", "d"
}
//8.entries() 获得键值对
console.log(st2.entries());
for (let b of st2.entries()) {
console.log(b)
}
//9.forEach
st2.forEach((item, index, s) => {
console.log(item, index, s)
})
1.3 Set的其他使用
// 去除数组的重复成员
[...new Set(array)]
//上面的方法也可以用于,去除字符串里面的重复字符
[...new Set('ababbc')].join('')
// "abc"
2 Map
2.1 什么是Map
-
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
-
为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
//为什么会有Map,因为对象属性名称必须是字符串,如果是其他类型则不行
let p1 = { name: "lily" };
let obj1 = {
id: 1,
[p1]: "good"
}
console.log(obj1)
// Map也是新增的数据解构 类似于对象
let mp1 = new Map([
["a", 1],
["b", 2],
])
console.log(mp1)
let p2 = { name: "lily" };
let mp2 = new Map([
["a", 1],
[p2, 2],
])
console.log(mp2)
2.2 Map的属性和方法
size
属性返回 Map 结构的成员总数。set
方法设置键名key
对应的键值为value
,然后返回整个 Map 结构。如果key
已经有值,则键值会被更新,否则就新生成该键。set
方法返回的是当前的Map
对象,因此可以采用链式写法。get
方法读取key
对应的键值,如果找不到key
,返回undefined
。has
方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。delete
方法删除某个键,返回true
。如果删除失败,返回false
。clear
方法清除所有成员,没有返回值。keys()
:返回键名的遍历器。values()
:返回键值的遍历器。entries()
:返回所有成员的遍历器。forEach()
:遍历 Map 的所有成员。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!