¿Cómo convertir conjunto a matriz?
Set parece una buena manera de crear matrices con elementos únicos garantizados, pero no expone ninguna buena manera de obtener propiedades, excepto el generador [Set].values, que se llama de una manera incómoda mySet.values.next()
.
Esto habría estado bien si pudieras llamar map
a funciones similares en Sets. Pero tampoco puedes hacer eso.
Lo intenté Array.from
, pero parece estar convirtiendo solo objetos tipo matriz (¿NodeList y TypedArrays?) a Array. Otro intento: Object.keys
no funciona para Conjuntos y Set.prototype no tiene un método estático similar.
Entonces, la pregunta: ¿Existe algún método incorporado conveniente para crear una matriz con valores de un conjunto determinado? (El orden de los elementos realmente no importa).
Si no existe tal opción, ¿tal vez haya una buena frase idiomática para hacerlo? ¿Me gusta, uso for...of
o similar?
Si no existe tal opción, ¿tal vez haya una buena frase idiomática para hacerlo? ¿Me gusta, uso
for...of
o similar?
De hecho, hay varias formas de convertir un conjunto en una matriz :
- Usando
Array.from
:
Nota: más seguro para TypeScript.
const array = Array.from(mySet);
- Simplemente
spreading
el establecido en una matriz:
Nota: La difusión de un conjunto tiene problemas cuando se compila con TypeScript (consulte el número 8856 ). Es más seguro usar Array.from
arriba.
const array = [...mySet];
- A la antigua usanza, iterando y empujando a una nueva matriz (los conjuntos tienen
forEach
):
const array = [];
mySet.forEach(v => array.push(v));
- Anteriormente, se utilizaba la sintaxis de comprensión de matrices no estándar y ahora obsoleta:
const array = [v for (v of mySet)];
vía https://speakerdeck.com/anguscroll/es6-uncensored por Angus Croll
Resulta que podemos usar spread
el operador:
var myArr = [...mySet];
O, alternativamente, utilice Array.from
:
var myArr = Array.from(mySet);