Set 和 map 数据结构

set 和数组有点相似

一、set 实现数组去重

const set = new Set(['1', '1', 1, 2, 1, 2, 3, 3]);
// ['1', 1, 2, 3]
const set = new Set([[1], [1], 1, 1]);
// [[1], [1], 1] ==> 引用数据类型地址不一样

二、set 的一些方法

  • set.add() – 添加元素
let arr = [1, 2, 3];
let set = new Set(arr);

set.add(4);
// arr: [1, 2, 3, 4];
set.add(1);
// arr: [1, 2, 3]; ==> 如果数组里面已经这个元素已经存在,就添加不进去
  • set.delete() – 删除一个元素
let arr = [1, 2, 3];
let set = new Set(arr);

set.delete(3);
// arr: [1, 2];
  • set.has() – 查看元素是否存在
let arr = [1, 2, 3];
let set = new Set(arr);

set.has(3);
// true
  • set.clear() – 清除所有元素
let arr = [1, 2, 3];
let set = new Set(arr);

set.clear();
// set([0]);

三、遍历 set

  • for...of...
let arr = [1, 2, 3];
let set = new Set(arr);

for (let key of set.values()) {
 	console.log(key);
}

for (let key of set.keys()) {
 	console.log(key);
}

// 1
// 2
// 3

for (let key of set.entries()) {
 	console.log(key);
}

// [1, 1]
// [2, 2]
// [3, 3]

for (let [key, value] of set.entries()) {
 	console.log(key);
}

// 1, 1
// 2, 2
// 3, 3
  • forEach
let arr = [1, 2, 3];
let set = new Set(arr);

set.forEach(ele => {
 	console.log(ele);
})

// 1
// 2
// 3

Map数据结构

Map 是一个键值对的结构

// 初始化一个 map
const map = new Map([
['li', 100],
['zhang', 80],
['chen', 39]
]);

// 创建一个空 map
const map = new Map();

// 用 map.set(key, value) -- 往里面添加键值对
map.set('li', 100);
map.set('zhang', 80);
map.set('chen', 39);

// map.get(key); -- 获取 map 获取键所对应的值
console.log(map.get('li')); // 100

// map.has('key') -- 判断是否存在这个键
console.log(map.has('li')); // true

// map.clear() -- 清除所有键值对
map.clear();

遍历 map 里面的键值对

  • for...of...
const map = new Map([
  	['li', 100],
  	['zhang', 80],
  	['chen', 39]
]);

for (let prop of map) {
  	console.log(prop.toString);
}

// li, 100
// zhang, 80
// chen, 39

for (let prop of map.keys()) {
  	console.log(prop);
}

// li
// zhang
// chen

for (let prop of map.values()) {
  	console.log(prop);
}

// 100
// 12
// 32

for (let prop of map.entries()) {
  	console.log(prop);
}

// ["li", 100]
// ["zhang", 12]
// ["chen", 32]

for (let [key, value] of map.entries()) {
  	console.log(key, value);
}

// li 100
// zhang 12
// chen 32
  • forEach
const map = new Map([
  	['li', 100],
  	['zhang', 80],
  	['chen', 39]
]);

map.forEach(ele => {
  	console.log(ele);
})

// 100
// 12
// 32
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iteval

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值