O MSDN faz referência à abstração da coleção Set do JavaScript . Eu tenho uma matriz de objetos que gostaria de converter em um conjunto para poder remover ( .delete()
) vários elementos pelo nome:
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
Como faço para converter essa matriz em um conjunto? Mais especificamente, é possível fazer isso sem iterar sobre a matriz acima? A documentação está relativamente ausente (suficiente para conjuntos instanciados; não para conversões - se possível).
Também posso estar pensando na conversão para um mapa , para remoção por chave. O que estou tentando realizar é uma coleção iterável que pode ser acessada ou modificada através do acesso aos elementos principalmente por meio de uma chave (em oposição ao índice).
A conversão de uma matriz para outra é o objetivo final.
fonte
{"bob", "dole"}
não é um objeto válido.Set
eMap
a implementação "pura" dessas construções de dados que não sofrem os problemas queObject
podem quando as coisas são adicionadas ao seu protótipo.Respostas:
Apenas passe a matriz para o construtor Set. O construtor Set aceita um
iterable
parâmetro. O objeto Array implementa oiterable
protocolo, portanto é um parâmetro válido.Veja aqui
fonte
Se você começar com:
E você quer um conjunto de, digamos, nomes, você faria:
fonte
O que levi disse sobre a passagem para o construtor está correto, mas você também pode usar um objeto.
Acho que o que Veverke está tentando dizer é que você poderia facilmente usar a
delete
palavra - chave em um objeto para obter o mesmo efeito.Eu acho que você está confuso com a terminologia; As propriedades são componentes do objeto que você pode usar como índices nomeados (se desejar pensar dessa maneira).
Tente algo como isto:
Então, você poderia fazer isso:
A estrutura do objeto seria então:
Qual tem o mesmo efeito.
fonte
Por definição "Um conjunto é uma coleção de valores, onde cada valor pode ocorrer apenas uma vez". Portanto, se sua matriz tiver valores repetidos, apenas um valor entre os valores repetidos será adicionado ao seu conjunto.
Portanto, não converta para definir se você repetiu valores em sua matriz.
fonte