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 动态访问JSon元素示例代码
Aug 30 Javascript
javascript 使用for循环时该注意的问题-附问题总结
Aug 19 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
jQuery表单验证插件解析(推荐)
Jul 21 Javascript
ES6学习笔记之Set和Map数据结构详解
Apr 07 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
JS数组的高级使用方法示例小结
Mar 14 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
ie 调试javascript的工具
2009/04/29 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
微信小程序签到功能
2018/10/31 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
python获取标准北京时间的方法
2015/03/24 Python
使用Python生成url短链接的方法
2015/05/04 Python
python写一个md5解密器示例
2018/02/23 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
flask开启多线程的具体方法
2020/08/02 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
股权转让协议书范本
2014/04/12 职场文书
卖房协议书样本
2014/10/30 职场文书
2015年助残日活动总结
2015/03/27 职场文书
永不妥协观后感
2015/06/10 职场文书
投诉信格式范文
2015/07/02 职场文书