新增数据结构

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 的所有成员。
posted @   z_bky  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示