Tableau JavaScript pour Définir
MSDN références JavaScript Ensemble de la collection de l'abstraction. J'ai un tableau d'objets que j'aimerais convertir en un ensemble, de sorte que je suis capable de supprimer (.delete()
) divers éléments par nom:
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
Comment puis-je convertir ce tableau à un jeu? Plus précisément, est-il possible de le faire sans parcourir le tableau ci-dessus? La documentation est relativement défaut (suffisant pour instancié jeux; pas pour les conversions si possible).
J'ai peut-être aussi la pensée de la conversion en une Carte, pour l'enlèvement par clé. Ce que je suis en train d'accomplir, c'est un objet iterable collection qui peut être consulté ou modifié via l'accès aux éléments principalement par l'intermédiaire d'une clé (par opposition à l'index).
De Conversion à partir d'un tableau à l'autre étant le but ultime.
- sonne comme un bon vieux Objet de travail pour vous...
- ne pouvez-vous pas obtenir le même à l'aide d'un objet régulier et en supprimant les propriétés ? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
- merci, a changé.
- ne cherche pas à supprimer les propriétés. Vous cherchez à supprimer les objets, eux-mêmes.
- donc, je suis en manque de quelque chose, que je veux apprendre. Quelle est la différence entre la var s = new Jeu(), ajout d'objets et de délivrance de s.supprimer(quoi que) et var o = {1: 'aaa', 2: 'bbbb' ... } et l'émission de supprimer(o['1']) ?
- c'était plus descriptive que vous initial commentaire (+1). Je vous remercie. Mais, encore une fois, est-il possible de le faire sans avoir à parcourir le tableau pour que le contenu du tableau à l'objet et à conserver une liste comme clé, accessible structure? On dirait que vous avez une idée. Je ne me dérangerait pas de le voir dans un format de réponse si vous avez du temps à élaborer.
- Je vais avoir du mal à comprendre "... pour que le contenu du tableau à l'objet... " . Pourriez-vous nous donner un exemple de scénario de ce que vous voulez accomplir et ce que vous êtes en supposant que ne fonctionnera pas ?
- Pour être honnête, la seule différence entre un objet et un objet ordinaire est que le premier fournit une méthode claire dans son API qui supprime toutes les propriétés de l'objet - quelque chose qui nécessiterait une boucle dans un objet ordinaire. C'est donc un "nice to have" de la fonctionnalité. Autre que... quelqu'un?
- Vous pourriez économiser quelques séquences de touches en les ajoutant avec un foreach; mais il semble que l'ECMAScript 6 définition ne comprend pas quelque chose comme ce que vous cherchez. (Par exemple, j'aurais espéré "nouvel Ensemble(item1, item2)" serait donner ce que vous cherchez.) Et oui, ne oubliez pas de assurez-vous que tous vos navigateurs préférés Set de soutien, parce que c'est ES6.
- Cet objet array n'est pas légal, car
{"bob", "dole"}
n'est pas un objet valide. - ES6
Set
etMap
sont de "purs" de la mise en œuvre de ces données, les constructions qui ne souffrent pas les questions qu'unObject
peut quand les choses sont ajoutés à son prototype. - merci! Fixe.
- quelle est donc la signification de l'existence de trois objets distincts, chacun avec un nombre variable de clés? Qui des valeurs exactes (ou clés) vous souhaitez figurer dans la
Set
? - Jeu ne prend pas en charge les éléments en double.
- ni une
Object
. - nous progressons bien... 🙂
- De toutes sortes - @Thomas - vous encore besoin d' (donnée de l'exemple de données d'entrée) pour nous dire exactement ce que les touches sont censées apparaître dans la
Set
. - L'ensemble itérateur conserve l'ordre d'insertion des éléments. L'objet n'a pas.
- pourriez-vous incarner ? Si j'ajoute un élément à Définir, il est ajouté à la fin... à faire de même dans un simple objet, la même volonté de ne pas se produire ? Tout à droite, j'ai juste testé... et UNIQUEMENT pour les propriétés dont les noms sont des entiers d'un objet ordinaire ne suffira pas à maintenir l'ordre, plutôt, sera de commande numérique... est ce que c'est ?
- objet de la commande n'est pas garanti. stackoverflow.com/questions/5525795/.... Un ensemble est plus proche d'un tableau que d'un objet.
- J'ai juste ajouté un commentaire... nous deviennent plus précises, donc j'ai toujours demander: ne peut-on pas dire que la commande n'est pas garanti en raison UNIQUEMENT les cas où les propriétés sont les chaînes numériques ?
- non, vous ne pouvez pas dire que. L'ordre n'est jamais garanti sur une
Object
, bien que dans uneSet
c'est la garantie d'être en ordre d'insertion. - p.s. ce est en fait principalement hors sujet pour cette question.
- l'utilisation d'une Carte, pas un Jeu, une carte est pour les valeurs de la clé, un ensemble est juste un groupe de clés uniques, sans valeurs
- Ce n'est pas tout à fait vrai @MartijnScheffer. Définir et Carte des collections à la fois avoir des valeurs, mais sémantiquement représenter différentes choses.medium.com/ecmascript-2015/es6-set-map-weak-a2aeb7e2d384
- un Ensemble est un groupe de Clés, une Carte un groupe de clés et de valeurs, à partir de la description de son problème, j'en ai déduit que la Carte est ce qu'il veut
Vous devez vous connecter pour publier un commentaire.
Vient de passer le tableau pour le constructeur d'Ensemble. Le constructeur d'Ensemble accepte un
iterable
paramètre. Le Tableau objet implémente l'iterable
protocole, de sorte que ses un paramètre valide.JS:
Voir ici
Ce levi dit sur le passage dans le constructeur est correct, mais vous pouvez également utiliser un objet.
Je pense que ce Veverke essaie de dire, c'est que vous pouvez facilement utiliser la
supprimer
mot clé sur un objet pour obtenir le même effet.Je pense que vous êtes confus par la terminologie; propriétés sont des composants de l'objet que vous pouvez utiliser comme nommé indices (si vous voulez penser de cette façon).
Essayer quelque chose comme cela:
Ensuite, vous pourriez faire ceci:
La structure de l'objet serait alors ceci:
Qui a le même effet.
Si vous commencez avec:
Et que vous voulez un jeu, disons, de noms, vous devez faire:
Par définition "Un Ensemble est une collection de valeurs, où chaque valeur peut se produire qu'une seule fois." Donc, si votre tableau comporte des valeurs répétées alors qu'une valeur parmi les valeurs répétées seront ajoutés à votre Jeu.
Donc, ne pas se convertir à définir si vous avez répété les valeurs de votre tableau.