Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. JavaScript
  3. Referencia de JavaScript
  4. Objetos globales
  5. Set

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

Set

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨julio de 2015⁩.

* Some parts of this feature may have varying levels of support.

El objetoSet le permite almacenar valores únicos de cualquier tipo, ya seavalores primitivos o referencias a objetos.

Descripción

Los objetosSet son colecciones de valores. Puede iterar a través de los elementos de un conjunto en orden de inserción. Un valor en unSetsolo puede ocurrir una vez; es único en la colección delSet.

Igualdad de valores

Debido a que cada valor en elSet tiene que ser único, se verificará la igualdad de valores. En una versión anterior de la especificación ECMAScript, esto no se basaba en el mismo algoritmo que el utilizado en el operador===. Específicamente, para losSet,+0 (que es estrictamente igual a-0) y-0 eran valores diferentes. Sin embargo, esto se cambió en la especificación ECMAScript 2015. Consulte"Igualdad de clave para -0 y 0" en la tabla decompatibilidad del navegador para obtener más detalles.

NaN yundefined también se pueden almacenar en unSet. Todos los valores deNaN se equiparan (es decir,NaN se considera lo mismo queNaN, aunqueNaN !== NaN).

Rendimiento

El métodohas deSet verifica si un valor está en un objetoSet, utilizando un enfoque que, en promedio, es más rápido que probar la mayoría de los elementos que se han agregado previamente al objetoSet. En particular, es, en promedio, más rápido que el métodoArray.prototype.includes cuando un objetoArray tiene unlength igual alsize de un objetoSet.

Constructor

Set()

Crea un nuevo objetoSet.

Propiedades estáticas

get Set[@@species]

La función del constructor que se utiliza para crear objetos derivados.

Propiedades de instancia

Set.prototype.size

Devuelve el número de valores en el objetoSet.

Métodos de instancia

Set.prototype.add(value)

Añadevalue al objetoSet. Devuelve el objetoSet con el valor añadido.

Set.prototype.clear()

Elimina todos los elementos del objetoSet.

Set.prototype.delete(value)

Elimina el elemento asociado avalue y devuelve un booleano que afirma si un elemento se eliminó correctamente o no.Set.prototype.has(value) devolveráfalse después.

Set.prototype.has(value)

Devuelve un booleano que afirma si un elemento está presente con el valor dado en el objetoSet o no.

Métodos de iteración

Set.prototype[@@iterator]()

Devuelve un nuevo objeto iterador que genera losvalues de cada elemento del objetoSet en el orden de inserción.

Set.prototype.values()

Devuelve un nuevo objeto iterador que genera losvalues de cada elemento del objetoSet en el orden de inserción.

Set.prototype.keys()

Un alias paraSet.prototype.values().

Set.prototype.entries()

Devuelve un nuevo objeto iterador que contieneun arreglo de[value, value] para cada elemento del objetoSet, en orden de inserción.

Esto es similar al objetoMap, de modo que laclave de cada entrada es la misma que suvalor para unSet.

Set.prototype.forEach(callbackFn[,thisArg])

Llama acallbackFn una vez por cada valor presente en el objetoSet, en orden de inserción. Si se proporciona un parámetrothisArg, se utilizará como valorthis para cada invocación decallbackFn.

Ejemplos

Utilizando el objeto Set

js
const mySet1 = new Set();mySet1.add(1); // Set [ 1 ]mySet1.add(5); // Set [ 1, 5 ]mySet1.add(5); // Set [ 1, 5 ]mySet1.add("algún texto"); // Set [ 1, 5, 'algún texto' ]const o = { a: 1, b: 2 };mySet1.add(o);mySet1.add({ a: 1, b: 2 }); // o está haciendo referencia a un objeto diferente,// por lo que está bienmySet1.has(1); // truemySet1.has(3); // false, ya que 3 no se ha agregado al conjuntomySet1.has(5); // truemySet1.has(Math.sqrt(25)); // truemySet1.has("Algún Texto".toLowerCase()); // truemySet1.has(o); // truemySet1.size; // 5mySet1.delete(5); // elimina 5 del conjuntomySet1.has(5); // false, 5 ha sido eliminadomySet1.size; // 4, ya que acabamos de eliminar un valorconsole.log(mySet1);// imprime en consola Set(4) [ 1, "algún texto", {…}, {…} ] en Firefox// imprime en consola Set(4) { 1, "algún texto", {…}, {…} } en Chrome

Iterando Set

js
// iterar sobre los elementos en Set// imprime en consola los elementos en el orden://   1, "algún texto", {"a": 1, "b": 2}, {"a": 1, "b": 2}for (let item of mySet1) console.log(item)// imprime en consola los elementos en el orden://   1, "algún texto", {"a": 1, "b": 2}, {"a": 1, "b": 2}for (let item of mySet1.keys()) console.log(item)// imprime en consola los elementos en el orden://   1, "algún texto", {"a": 1, "b": 2}, {"a": 1, "b": 2}for (let item of mySet1.values()) console.log(item)// imprime en consola los elementos en el orden://   1, "algún texto", {"a": 1, "b": 2}, {"a": 1, "b": 2}// (key y value son los mismos aquí)for (let [key, value] of mySet1.entries()) console.log(key)// convertir el objeto Set en un objeto Array, con Array.fromconst myArr = Array.from(mySet1) // [1, "algún texto", {"a": 1, "b": 2}, {"a": 1, "b": 2}]// lo siguiente también funcionará si se ejecuta en un documento HTMLmySet1.add(document.body)mySet1.has(document.querySelector('body')) // true// conversión entre Set y Arrayconst mySet2 = new Set([1, 2, 3, 4])mySet2.size                    // 4[...mySet2]                    // [1, 2, 3, 4]// la intersección se puede simular a través deconst intersection = new Set([...mySet1].filter(x => mySet2.has(x)))// la diferencia se puede simular medianteconst difference = new Set([...mySet1].filter(x => !mySet2.has(x)))// iterar entradas de Set con forEach()mySet2.forEach(function(value) {  console.log(value)})// 1// 2// 3// 4

Implementación de operaciones básicas de conjuntos

js
function isSuperset(set, subset) {  for (let elem of subset) {    if (!set.has(elem)) {      return false;    }  }  return true;}function union(setA, setB) {  let _union = new Set(setA);  for (let elem of setB) {    _union.add(elem);  }  return _union;}function intersection(setA, setB) {  let _intersection = new Set();  for (let elem of setB) {    if (setA.has(elem)) {      _intersection.add(elem);    }  }  return _intersection;}function symmetricDifference(setA, setB) {  let _difference = new Set(setA);  for (let elem of setB) {    if (_difference.has(elem)) {      _difference.delete(elem);    } else {      _difference.add(elem);    }  }  return _difference;}function difference(setA, setB) {  let _difference = new Set(setA);  for (let elem of setB) {    _difference.delete(elem);  }  return _difference;}// Ejemplosconst setA = new Set([1, 2, 3, 4]);const setB = new Set([2, 3]);const setC = new Set([3, 4, 5, 6]);isSuperset(setA, setB); // devuelve trueunion(setA, setC); // devuelve Set {1, 2, 3, 4, 5, 6}intersection(setA, setC); // devuelve Set {3, 4}symmetricDifference(setA, setC); // devuelve Set {1, 2, 5, 6}difference(setA, setC); // devuelve Set {1, 2}

Relación con objetos Array

js
let myArray = ["value1", "value2", "value3"];// Use el constructor Set regular para transformar una matriz en un conjuntolet mySet = new Set(myArray);mySet.has("value1"); // devuelve true// Utilice el operador de dispersión para transformar un conjunto en una matriz.console.log([...mySet]); // Le mostrará exactamente el mismo Array que myArray

Eliminar elementos duplicados del Array

js
// Úselo para eliminar elementos duplicados del Arrayconst numbers = [2, 3, 4, 4, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 5, 32, 3, 4, 5];console.log([...new Set(numbers)]);// [2, 3, 4, 5, 6, 7, 32]

Relación con Strings

js
let text = "India";const mySet = new Set(text); // Set(5) {'I', 'n', 'd', 'i', 'a'}mySet.size; // 5// mayúsculas, minúsculas y omisión duplicadanew Set("Firefox"); // Set(7) { "F", "i", "r", "e", "f", "o", "x" }new Set("firefox"); // Set(6) { "f", "i", "r", "e", "o", "x" }

Use Set para garantizar la unicidad de una lista de valores

js
const array = Array.from(document.querySelectorAll("[id]")).map(function (e) {  return e.id;});const set = new Set(array);console.assert(set.size == array.length);

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-set-objects

Compatibilidad con navegadores

Véase también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp