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 相关文章推荐
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
Dec 13 Javascript
JQuery中使用ajax传输超大数据的解决方法
Jul 14 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
javascript事件冒泡实例分析
May 13 Javascript
浅谈JavaScript中小数和大整数的精度丢失
May 31 Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 Javascript
JS实现动态添加DOM节点和事件的方法示例
Apr 28 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
Dec 29 jQuery
Javascript call及apply应用场景及实例
Aug 26 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
一个图形显示IP的PHP程序代码
2007/10/19 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php中strtotime函数用法详解
2014/11/15 PHP
33道php常见面试题及答案
2015/07/06 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
详解Django中的过滤器
2015/07/16 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python导入模块交叉引用的方法
2019/01/19 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
日本航空官方网站:JAL
2019/06/19 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
教师自荐信范文
2013/12/09 职场文书
超市理货员岗位职责
2014/07/04 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
歌剧魅影观后感
2015/06/05 职场文书
2016高考寄语集锦
2015/12/04 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
2019军训心得体会
2019/06/27 职场文书
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python