时间:2021-05-28
介绍
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); // 4animals.add('🐼');console.log(animals.size); // 4console.log(animals.has('🐷')); // trueanimals.delete('🐷');console.log(animals.has('🐷')); // falseanimals.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); // 4myAnimals.forEach(animal => { console.log(animal);});// 🐷// 🐢// ["🐨", "🐑"]// Object { name: "Rud", type: "🐢" }字符串也是一个有效的迭代,所以也可以被传入来初始化一个set:
console.log('Only unique characters will be in this set.'.length); // 43let sentence = new Set('Only unique characters will be in this set.');console.log(sentence.size); // 18For...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/
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本节我们来学习ES6中字符串类型的扩展,包括一些字符串对象的新增方法的使用等。字符的Unicode表示法ES6加强了对Unicode的支持,JavaScript
前言在ES6中引入JavaScript的新特性中,我们看到了Set和Map的介绍。与常规对象和Array不同的是,它们是“键控集合(keyedcollectio
JavaScript中循环语句不少,for、forin、forof和forEach循环,今天对比Array、Object、Set(ES6)、Map(ES6)四种
前言将A对象的属性复制给B对象,这是JavaScript编程中很常见的操作。下面这篇文章将介绍ES6的Object.assign()属性,可以用于对象复制。在J
本文主要讲解ES6数组方法find()与findIndex(),关于JS的更多数组方法,可参考以下:①JavaScript内置对象之-Array②ES5新增数组