ES6 中的 Set 对象

添加:

javascript 复制代码
let mySet = new Set();
 
mySet.add(1); // Set(1) {1}
mySet.add(5); // Set(2) {1, 5}
mySet.add(5); // Set(2) {1, 5} 这里体现了值的唯一性
mySet.add("some text"); 
// Set(3) {1, 5, "some text"} 这里体现了类型的多样性
var o = {a: 1, b: 2}; 
mySet.add(o);
mySet.add({a: 1, b: 2}); 
// Set(5) {1, 5, "some text", {...}, {...}} 
// 这里体现了对象之间引用不同不恒等,即使值相同,Set 也能存储

如何将 Set 转换为 Array:

javascript 复制代码
// Array 转 Set
var mySet = new Set(["value1", "value2", "value3"]);
// 用...操作符,将 Set 转 Array
var myArray = [...mySet];

// String 转 Set
var mySet = new Set('hello');  // Set(4) {"h", "e", "l", "o"}
// 注:Set 中 toString 方法是不能将 Set 转换成 String

Set 对象作用:

数组去重

javascript 复制代码
var mySet = new Set([1, 2, 3, 4, 4]);
[...mySet]; // [1, 2, 3, 4]

并集

javascript 复制代码
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]); // {1, 2, 3, 4}

交集

javascript 复制代码
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

差集

javascript 复制代码
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var difference = new Set([...a].filter(x => !b.has(x))); // {1}
相关推荐
何何____7 小时前
js常见继承方法详解
前端·javascript
parade岁月7 小时前
Tailwind CSS 加入 Shopify,正在用 Tailwind 的项目要不要调整?
前端
梨想橙汁7 小时前
Vue2 快速入门:环境搭建、模板语法、指令系统全解
前端·vue.js
King of fraud7 小时前
HTML 页面的 CSS 选择器详解
前端·css·html
lichenyang4537 小时前
ASCF 元服务如何区分“后台恢复”与“携参拉起”:后台标记 + 参数指纹方案
前端
前端 贾公子7 小时前
Milvus使用指南 (下)
java·服务器·前端
用户2462035827817 小时前
TypeScript类型建模与前后端错误码协议:手机号绑定场景的工程实践
前端
风骏时光牛马7 小时前
云原生架构设计:弹性底座驱动业务持续迭代
前端
用户54277848515407 小时前
浏览器后台休眠节流
前端
蜡台7 小时前
Vue 3 原生 ESM 开发实战:不用打包工具,从零搭建组件化应用
前端·javascript·vue.js·html