JavaScript(十)——Set Map

Set

什么是Set

  • Set是一种叫集合的数据结构
  • 本质是个构造函数 , 允许储存任何类型的值 , 并且成员的值都是唯一的 , 即没有重复的
  • 类似数组 , 但没有下标 , 没有length , 不是按照下标储存的 , 所以不能依照下标循环 , 但是有序
  • .插入速度和删除速度非常快,遍历查找速度也非常快,但是略低于键值对类型。
  • 应用就是去重 , 用Array.from 方法数组去重
var arr=[1,3,5,7,2,4,3,5,1,2,6,5,7,8,9,1,2,4,3,5,7,9];

arr=Array.from(new Set(arr));

console.log(arr);

Set方法

  • Set的属性 size , 代替数组里的length
  • 支持add(添加) , has(查找) , delete(删除) , clear (清除所有成员)
let s= new Set([1])
s.add(2)
s.size // 2
s.has(1) // true
s.delete(2);
  • 添加的时候不会数据类型转换 , 比如5和"5" 是不一样的 , Set 内部判断两个值是否不同,使用的算法叫做“Same-value-zero equality” 类似于 "===" , 并且所有NaN是一样的 , 虽然NaN区别于自身

遍历成员

  • Set 结构的实例与数组一样,也拥有forEach方法,用于对每个成员执行某种操作,没有返回值。这里需要注意,Set 结构的键名就是键值(两者是同一个值),因此第一个参数与第二个参数的值永远都是一样的
let s = new Set()
s.add(1)
s.add(3)
s.add(5)
s.forEach((value, key) => console.log(key + ' : ' + value));  // 1:1, 3:3, 5:5

在这里插入图片描述

  • 同时keys方法可以遍历集合的键名 , values方法可以遍历集合的键值
let set = new Set();
set.add(1);
set.add(3);
set.add(2);
console.log(set.keys());    
console.log(set.values()); 

在这里插入图片描述

Map

什么是Map

  • 是一种叫字典的数据结构
  • 类似对象 , 传统的对象键只能是字符串 ,本质是 "键–值"对的结合 , Map突破了这一限制 , Map的键不仅可以是字符串 , 提供"值--值"对应
  • Map里面的成员也是唯一的 , 不储存重复的值
  • Map 的键要两个值严格相等(===),将其视为一个键,另外,undefinednull也是两个不同的键。虽然NaN不严格相等于自身,但 Map 将其视为同一个键。

Map方法

size(个数) , set (创建), get (获取), has (查找) , delete(删除)

const map = new Map([
          ["a", 111],
          ["b", 222],
        ]);

        console.log(map.size);
		console.log(map.get("a"));
        map.set("c", 333);
        console.log(map.size);
        console.log(map.has("c"));
        console.log(map.delete("c"));
        console.log(map.size);
        map.clear();
        console.log(map.size)

在这里插入图片描述

遍历

for( of )

		const map = new Map([
          ["a", 111],
          ["b", 222],
        ]);
        console.log(map.keys());

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

        for (let value of map.values()) {
          console.log(value);
        }
        for (let item of map.entries()) {
          console.log(item);
        }
        for (let [key, value] of map.entries()) {
          console.log(key,value);
        }
//迭代器模式  for( of ) 迭代       for( in )  遍历对象

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值