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 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
jquery 表单进行客户端验证demo
Aug 24 Javascript
CCPry JS类库 代码
Oct 30 Javascript
jquery实用代码片段集合
Aug 12 Javascript
jQuery实现3D文字特效的方法
Mar 10 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
BootStrop前端框架入门教程详解
Dec 25 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
VueJS事件处理器v-on的使用方法
Sep 27 Javascript
vue 实现走马灯效果
Oct 28 Javascript
详解Vue的组件中data选项为什么必须是函数
Aug 17 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
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常用的排序和查找算法
2015/08/06 PHP
Symfony核心类概述
2016/03/17 PHP
PHP实现小偷程序实例
2016/10/31 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
Python如何在循环内使用list.remove()
2020/06/01 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
销售类个人求职信范文
2013/09/25 职场文书
会计岗位职责模板
2014/03/12 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
中学生演讲稿
2014/04/26 职场文书
施工安全责任书范本
2014/07/24 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2014年档案室工作总结
2014/12/01 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
公司2015年终工作总结
2015/05/26 职场文书
党性修养心得体会2016
2016/01/21 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
日元符号 ¥
2022/02/17 杂记
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技