es6 数据结构 Set Map Symbol

es6中,新增了两种数据结构,或者说是两个集合类,Set和Map

最简单的理解就是,跟Java中的Set和Map是一样的😄

Set

Set中存储的值不能重复,也就是说,可以自动的实现去重的功能。

实例化

// Set(2) {1, 2}
//方法一
const s=new Set();
s.add(1).add(2).add(1).add(2) // 支持链式调用

//方法二
const s1=new Set([1,2,1,2])

类型转换

Array转Set,参照上述方法二

const s1=new Set([1,2,1,2])

Set转Array

//返回 [1,2]
//方法一
Array.from(s)

//方法二
[...s]

 简单去重

let arr=[1,2,3,2,1];
arr=[...new Set(arr)];

Map

Map乍一看跟对象很像,但是Map跟对象还是有一些区别的

  • Map实现了迭代方法,而对象的属性不可以直接迭代
  • Map的键可以是任何对象,而对象的键只能是字符串

实例化

//实例化Map类
const map=new Map()
map.set('name','binx').set('age',18).set({a:1},'value')

//通过二维数组实例化
new Map([['name','binx'],['age',18]])

类型转换

Map转Object

let map=new Map([['name','binx'],['age',18]])
let o={};
//循环遍历赋值
for(let [k,v] of map){
    o[k]=v;
}

Object转Map

let o={name:'binx',age:18}
// Object.entries 方法可以返回对象的键值对二维数组
let map=new Map(Object.entries(o))
const o={name:'binx',age:18}
const map=new Map();
//循环遍历填充Map
for(let k in o){
    map.set(k,o[k]);
}

 

Symbol

Symbol 用于创建一个唯一的值

let a = Symbol('s');
let b = Symbol('s');
a===b // false

// 类似于
let c = new String('s')
let d = new String('s')
c===d // false

Symbol.toPrimitive

作为内部函数,其可被用来进行类型转换

let time = new Date()
console.log(time);
console.log(Number(time));
console.log(time[Symbol.toPrimitive])
console.log(time[Symbol.toPrimitive]('number')); // 将Date转换为Number实际上是调用了此方法

 

posted @   Bin_x  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示