Búsqueda de sitios web

javascript - Cómo obtener el primer elemento de un Set en ES6 (EcmaScript 2015)


En ES6, ¿cómo obtenemos rápidamente el elemento?

En la sintaxis de MDN para Set, no encontré una respuesta para ello.

Respuesta #1

No parecen exponer la Lista para que sea accesible desde el Objeto instanciado. Esto es del Borrador de EcmaScript:

23.2.4 Propiedades de las Instancias de Conjuntos

Las instancias de Set son objetos ordinarios que heredan propiedades del prototipo Set. Las instancias de Set también tienen un espacio interno [[SetData]].

[[SetData]] es la lista de valores que contiene el Conjunto.

Una posible solución (y algo cara) es tomar un iterador y luego llamar a next() para obtener el primer valor:

var x = new Set();
x.add(1);
x.add({ a: 2 });
//get iterator:
var it = x.values();
//get first entry:
var first = it.next();
//get value out of the iterator entry:
var value = first.value;
console.log(value); //1

Vale la pena mencionar también:

Set.prototype.values === Set.prototype.keys

Respuesta #2

hay muchas soluciones

  1. bucle for...of

const set = new Set();
set.add(2);
set.add(3);

// return the first item of Set ✅
function getFirstItemOfSet(set) {
  for(let item of set) {
    if(item) {
       return item;
    }   
  }
  return undefined;
}

const first = getFirstItemOfSet(set);
console.log('first item =', first);
  1. destructuring assignment

const set = new Set();
set.add(2);
set.add(3);

// only get the first item ✅
const [first] = set;
console.log('first item =', first, typeof first);
// first item = 2 number
  1. operador ...spread

const set = new Set();
set.add(2);
set.add(3);

// convert Set to Array ✅
const first = [...set][0];
console.log('first item =', first);
  1. iterador & siguiente()

const set = new Set();
set.add(2);
set.add(3);

// iterator ✅
const first = set.keys().next().value;
console.log(`first item =`, first);

// OR
set.values().next().value;

// OR
set.entries().next().value[0];
// OR
set.entries().next().value[1];

referencias

https://www.cnblogs.com/xgqfrms/p/16564519.html

Respuesta #3

sucinta

let s = new Set([2,3,4]) // given a set s
let [head] = s           // use destructuring to get its first element

console.log(head)

Artículos relacionados