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 相关文章推荐
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 Javascript
div层的移动及性能优化
Nov 16 Javascript
jQuery 一个图片切换的插件
Oct 09 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
使用three.js 画渐变的直线
Jun 05 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
Dec 11 Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 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
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
提高php编程效率技巧
2015/08/13 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
jQuery实现评论模块
2020/08/19 jQuery
js实现弹幕墙效果
2020/12/10 Javascript
基于python 字符编码的理解
2017/09/02 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python sort、sort_index方法代码实例
2019/03/28 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
冬季施工防火方案
2014/05/17 职场文书
监督检查工作方案
2014/05/28 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
员工离职通知函
2015/04/25 职场文书
《穷人》教学反思
2016/02/19 职场文书