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的Cookies
Jan 16 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
浅析JavaScript中的CSS属性及命名规范
Nov 28 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
Vue AST源码解析第一篇
Jul 19 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 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
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python中threading超线程用法实例分析
2015/05/16 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
手机配件第一品牌:ZAGG
2017/05/28 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
建筑班组长岗位职责
2014/01/02 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
保护环境的宣传语
2015/07/13 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
高中政治教学反思
2016/02/23 职场文书
pandas中关于apply+lambda的应用
2022/02/28 Python
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技