MSDN hace referencia a la abstracción de la colección Set de JavaScript . Tengo una serie de objetos que me gustaría convertir en un conjunto para poder eliminar ( .delete()
) varios elementos por nombre:
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
¿Cómo convierto esta matriz en un conjunto? Más específicamente, ¿es posible hacer esto sin iterar sobre la matriz anterior? La documentación es relativamente escasa (suficiente para conjuntos instanciados; no para conversiones, si es posible).
También puedo estar pensando en la conversión a un Mapa , para su eliminación por clave. Lo que estoy tratando de lograr es una colección iterable a la que se puede acceder o modificar a través del acceso a los elementos principalmente a través de una clave (a diferencia del índice).
La conversión de una matriz a otra es el objetivo final.
fuente
{"bob", "dole"}
que no es un objeto válido.Set
yMap
son una implementación "pura" de esas construcciones de datos que no sufren los problemas queObject
pueden cuando se agregan cosas a su prototipo.Respuestas:
Simplemente pase la matriz al constructor Set. El constructor Set acepta un
iterable
parámetro. El objeto Array implementa eliterable
protocolo, por lo que es un parámetro válido.Mira aquí
fuente
Si comienzas con:
Y quieres un conjunto de, por ejemplo, nombres, harías:
fuente
Lo que dijo Levi sobre pasarlo al constructor es correcto, pero también podría usar un objeto.
Creo que lo que Veverke está tratando de decir es que podría usar fácilmente la
delete
palabra clave en un objeto para lograr el mismo efecto.Creo que estás confundido por la terminología; las propiedades son componentes del objeto que puede usar como índices con nombre (si quiere pensarlo de esa manera).
Intenta algo como esto:
Entonces, podrías hacer esto:
La estructura del objeto sería entonces esta:
Lo que tiene el mismo efecto.
fuente
Por definición, "Un conjunto es una colección de valores, donde cada valor puede aparecer solo una vez". Entonces, si su matriz tiene valores repetidos, entonces solo se agregará un valor entre los valores repetidos a su Conjunto.
Por lo tanto, no convierta a conjunto si tiene valores repetidos en su matriz.
fuente