Javascript ES6中对象类型Sets的介绍与使用详解


Posted in Javascript onJuly 17, 2017

介绍

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。

Sets 是ES6(ES2015)中一个新的对象类型,用来创建一系列唯一值的集合。集合中的值可以是简单的原始类型如字符串(strings)或整数(integers),也可以是更复杂的对象类型如对象字面量或者数组。

基本方法

下面是基本的set及其方法(add, size, has, forEach, delete, clear)的简单示例:

let animals = new Set();

animals.add('?');
animals.add('?');
animals.add('?');
animals.add('?');
console.log(animals.size); // 4
animals.add('?');
console.log(animals.size); // 4

console.log(animals.has('?')); // true
animals.delete('?');
console.log(animals.has('?')); // false

animals.forEach(animal => {
 console.log(`Hey ${animal}!`);
});

// Hey ?!
// Hey ?!
// Hey ?!

animals.clear();
console.log(animals.size); // 0

初始化

下面是另一个将数组作为初始值传进set的示例。需要主要的是初始化的数组是如何被解构的,但是随后添加的数组将以数组的形式存在:

let myAnimals = new Set(['?', '?', '?', '?']);

myAnimals.add(['?', '?']);
myAnimals.add({ name: 'Rud', type: '?' });
console.log(myAnimals.size); // 4

myAnimals.forEach(animal => {
 console.log(animal);
});


// ?
// ?
// ["?", "?"]
// Object { name: "Rud", type: "?" }

字符串也是一个有效的迭代,所以也可以被传入来初始化一个set:

console.log('Only unique characters will be in this set.'.length); // 43

let sentence = new Set('Only unique characters will be in this set.');
console.log(sentence.size); // 18

For...of遍历

除了在一个set上可以使用forEach外,for...of循环也可以被用来遍历sets:

let moreAnimals = new Set(['?', '?', '?', '?']);

for (let animal of moreAnimals) {
 console.log(`Howdy ${ animal }`);
}

// Howdy ?
// Howdy ?
// Howdy ?
// Howdy ?

Keys 和 Values

Sets也有keys和values方法,由于keys是values的别名,所以两个方法其实是完成一样的事情。使用两者中的任何一个方法都会返回一个新的可迭代的对象,该对象的值与添加到集合中的顺序相同。

let partyItems = new Set(['?', '?', '?']);
let items = partyItems.values();

console.log(items.next());
console.log(items.next());
console.log(items.next());
console.log(items.next().done);

// Object {
// done: false,
// value: "?"
// }

// Object {
// done: false,
// value: "?"
// }

// Object {
// done: false,
// value: "?"
// }

// true

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

注:

原文: Introduction to Sets in JavaScript

作者: alligatorio

译者:smallbone

译文地址:https://alligator.io//js/sets-introduction/

Javascript 相关文章推荐
javascript模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
Jul 31 Javascript
JS限制Textarea文本域字符个数的具体实现
Aug 02 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 Javascript
深入分析javascript中的错误处理机制
Jul 17 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
基于Node.js模板引擎教程-jade速学与实战1
Sep 17 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
Jul 02 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
js实现图片懒加载效果
Jul 17 #Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 #Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 #Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 #Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
Jul 16 #Javascript
node.js express中app.param的用法详解
Jul 16 #Javascript
Node.js中流(stream)的使用方法示例
Jul 16 #Javascript
You might like
Laravel中Trait的用法实例详解
2016/03/16 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
php实现每日签到功能
2018/11/29 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
详解Python多线程
2016/11/14 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python面向对象封装操作案例详解
2019/12/31 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python中的全局变量如何理解
2020/06/04 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
python中time tzset()函数实例用法
2021/02/18 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
质量保证书怎么写
2015/02/27 职场文书
统招统分证明
2015/06/23 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
简单聊聊Golang中defer预计算参数
2022/03/25 Golang