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 嵌套的函数(作用域链)
Mar 15 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
Dec 22 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
Javascript Web Slider 焦点图示例源码
Oct 10 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
Dec 31 Javascript
全面解析Bootstrap表单样式的使用
Sep 09 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
js实现图片粘贴到网页
Dec 06 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多线程抓取网页实现代码
2010/07/22 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
营销主管自我评价怎么写
2013/09/19 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
现场施工员岗位职责
2014/03/10 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
政府信息公开实施方案
2014/05/09 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python