ES6的Map和Set数据类型

ES6中的Map和Set数据类型

ES6中新产生的Map和Set类型几乎在近几年的面试中成为了每次面试的必问的问题(没错,我也被问到了,但是答的很离谱)

js中的普通对象
Map

我们在使用javascript中的普通对象时,我们会发现,普通对象的key值只能是字符串,我们有想过去使用其他的一些基本数据类型去定义key值呢?
就针对这个问题而言,ES6中出现了一种特殊的数据类型 —— Map

Map的结构类似于普通对象,即以一种 key:value 的格式来呈现,
但是值的注意的是,Map的key值可以是 Number等其他的类型
我们来构建一个Map数据

var m = new Map([[1, 95], ['Bob', 75], ['Tracy', 85]]);
m;// Map(3) {1 => 95, "Bob" => 75, "Tracy" => 85}
// 直接在实例化的时候定制其内容
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
// 特殊的key值
var m = new Map([[1, 95], ['Bob', 75], ['Tracy', 85]]);
m.get(1); // 95

Map实例上的方法

// get方法
var m = new Map([[1, 95], ['Bob', 75], ['Tracy', 85]]);
m.get(1);// 95
m.get("bob"); //75
// set方法
// 设置一个全新的内容
var m = new Map([[1, 95], ['Bob', 75], ['Tracy', 85]]);
m.set("new",99);
m.get("new"); //75
// 注意:set在设置时,后面设置重复的值会将前面设置的值覆盖!!
Set

Set实际上与一组数组类似,与Map相比较的话,其只有key,没有value

MDN上这样定义Set:

      Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。

Set具有一个非常重要的属性,即其内部的值仅允许出现一次,不能重复!(我们可以利用这种特性来实现数组的去重)
举个例子

var s = new Set(["a","b","c","d","a"])
Array.from(s); // ["a", "b", "c", "d"]

接下来我们来构造一个Set数据

var s = new Set(["a","b","c","d"])
s; // Set(4) {"a", "b", "c", "d"}

接下来我们来看看Set上常用的一些方法(详细内容可以去这里查看)

// size
// 获取数据元素的长度
var s = new Set(["a","b","c","d"]);
console.log(s.size); // 4
// add()
// 在末尾添加一个元素(类似于push)
var s = new Set(["a","b","c","d"]);
s.add("1");
s;//Set(5) {"a", "b", "c", "d", "1"}
//clear()
// 清除所有元素
var s = new Set(["a","b","c","d"]);
s.clear();
s;// Set(0) {}
// has()
// 判断数据中是否含有对应内容
var s = new Set(["a","b","c","d"]);
s.has("a"); // true
// delete()
//删除某个元素
var s = new Set(["a","b","c","d"]);
s.delete("a");// 这里会返回删除前s.has("a")的值!!
s.has("a");// false

最后祝大家求职顺利!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值