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 相关文章推荐
Document 对象的常用方法
Jul 31 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
jquery键盘事件使用介绍
Nov 01 Javascript
js通过地址栏给action传值(中文乱码全是问号)
May 02 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
Dec 12 Javascript
javascript回到顶部特效
Jul 30 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
Aug 10 Javascript
详解react-redux插件入门
Apr 19 Javascript
微信小程序的部署方法步骤
Sep 04 Javascript
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
Vue OpenLayer 为地图绘制风场效果
Apr 24 Vue.js
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
PHP入门速成(2)
2006/10/09 PHP
php csv操作类代码
2009/12/14 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
基于python编写的微博应用
2014/10/17 Python
浅析python递归函数和河内塔问题
2017/04/18 Python
关于Python的一些学习总结
2018/05/25 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python实现对输入的密文加密
2019/03/20 Python
python字典一键多值实例代码分享
2019/06/14 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
总经理岗位职责
2013/11/09 职场文书
网络书店创业计划书
2014/02/07 职场文书
四年级科学教学反思
2014/02/10 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
高中生操行评语
2014/04/25 职场文书
庆元旦演讲稿
2014/09/15 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
答谢词范文
2015/01/05 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
学籍证明模板
2015/06/18 职场文书
合作意向书范本
2019/04/17 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python