Maison >interface Web >js tutoriel >Quelle est la structure de données définie de ES6

Quelle est la structure de données définie de ES6

一个新手
一个新手original
2017-09-09 13:57:551760parcourir

ES6 : Set

Comprendre Set

ES6 fournit la structure de données Set. Semblable à un tableau, mais sans valeurs en double.

  • Set lui-même est un constructeur, utilisé pour générer la structure de données Set

const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) {    console.log(i); //2 3 4 5 }
  • Set peut accepter un Un tableau (ou un objet de type tableau) est utilisé comme paramètre pour initialiser

var set = new Set([1, 2, 3, 4, 4]);
[...set]; // [1, 2, 3, 4]

, qui peut être utilisé pour la déduplication de tableau. La méthode [...new Set(array)]

peut être utilisée. Convertir la structure Set en un tableau

Array.from()Array.from(new Set(array))

    Lors de l'ajout d'une valeur à l'ensemble, aucune conversion de type ne se produit (similaire). pour exiger l'égalité ===), mais sachez que dans Set Here, NaN est égal à lui-même. Les deux autres objets ne sont toujours pas égaux.
Attributs et méthodes de l'instance Set
let set = new Set();let a = NaN;let b = NaN;
set.add(a);
set.add(b);
set; //{NaN} 只能加入一个,说明Set内部两个NaN是相等的

    Attributs :
    •  : Constructeur, la valeur par défaut est Set function

      Set.prototype.constructor

    •  : Renvoie le nombre total de membres de l'instance

      Set.prototype.size

    Méthode de fonctionnement (Pour l'implémentation spécifique de la méthode, voir : Mon étude simple des collections JS) :
    • : Ajouter une valeur et renvoyer la structure Set elle-même

      add(value)

    •  : Supprime une valeur et renvoie une valeur booléenne

      delete(value)

    •  : Renvoie une valeur booléenne indiquant s'il est membre

      has(value)

    •  : Effacer tous les membres, aucune valeur de retour

s.add(1).add(2).add(2); //链式写法s.size(); //2s.has(3); //falses.delete(2);
s.has(2); //false
  • 遍历方法

    • keys():返回键名的遍历器(什么是遍历器?Iterator)

    • values():返回键值的遍历器

    • entries():返回键值对的遍历器

    • forEach():使用回调函数遍历每个成员

这里要注意Set的键名和键值是同一个值,所以key()和values()行为是一致的。

let set = new Set(['red', 'green', 'no']);for(let item of set.keys()) {    console.log(item); //red green no}for(let item of set.values()) {    console.log(item); //red green no}for(let item of set.entries()) {    console.log(item); //['red': 'red'] ['green': 'green'] ['no': 'no']}//对每个成员执行某种操作,参数依次为键值、键名、集合本身new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6

操作集合

let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);//并集let union = new Set([...a, ...b]); //{1, 2, 3, 4}//交集let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3}//差集let difference = new Set([...a].filter(x => !b.has(x))); //{1}

号外:扩展运算符(...)内部使用for...of循环,所以应该知道for of是干嘛的吧

数组的map()filter()可用于Set

let set = new Set([1, 2, 3]);set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6}let set = new Set([1, 2, 3, 4, 5]);set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn