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实际上是调用了此方法
本文来自博客园,作者:Bin_x,转载请注明原文链接:https://www.cnblogs.com/Bin-x/p/15828352.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)