J'ai un tableau JS 'associatif', avec
for (var i in sorted)
4 Réponses :
En réalité, JavaScript ne prend pas en charge les tableaux associatifs, vous ne pouvez donc pas le faire boucler dans une commande implicite (par exemple, vous ne pouvez pas y accéder via la propriété Indexer http://www.hunlock.com/blogs/mastering_javascript_arrays P>
JavaScript n'a pas, et ne fait pas
Supporte les tableaux associatifs. Toutefois…
Tous les tableaux en JavaScript sont des objets
et la syntaxe d'objet de JavaScript donne un
émulation de base d'un associatif
Déployer. Pour cette raison, l'exemple
Le code ci-dessus va réellement fonctionner. Être
averti que ce n'est pas un véritable tableau
et il a de vrais Pitfals si vous essayez de
utilise le. L'élément "personne" dans le
l'exemple devient une partie de la matrice
Propriétés et méthodes de l'objet, juste
comme .length, .sort (), .splice (), et
toutes les autres propriétés intégrées et
Méthodes. P>
blockQuote> Array [0] Code> accéder au premier élément de votre objet). La syntaxe est ce qui le fait ressembler à cela, mais en réalité ce n'est pas le cas. Donc, vous n'avez pas de "commande" à vos objets. p>
UHM, les objets sont des tableaux associatifs?
Il n'y a pas de tableaux associatifs dans JavaScript, c'est tout un gros objet de freaking.
@Anders; Pomme de terre Potahto, il n'y a pas d'objets, ce sont tous de grandes matrices associatives de panneaux.
Les objets JS peuvent certainement être utilisés comme étalons associatifs, de sorte que le lien ci-dessus semble plus trompeur que utile (pour moi).
@Matthieu; J'irais même jusqu'à dire que les objets JavaScript sont des tableaux associatifs, vous pouvez insérer, supprimer et rechercher. Et vous pouvez parcourir les clés.
@roe, non ce n'est pas. Books.google.se/...
@Anders; Marche comme un canard et parle comme un canard, j'appellerais qu'un canard. Oui, ils sont appelés «propriétés d'objet» dans JavaScript, mais cela ne les empêche pas d'être un tableau associatif. Le lien que vous avez collé, dit simplement qu'ils ne sont pas des tableaux linéaires et ils ne sont certainement pas. Si vous souhaitez affirmer que ce ne sont pas des tableaux associatifs, nommez une propriété de tableaux associatifs que les objets JavaScript ne possèdent pas.
Depuis ES6, les propriétés avec les touches de chaîne sont énumérées dans l'ordre d'insertion. Voici Un beau résumé . Ma réponse originale de 2010 a été correcte à l'époque et est préservée ci-dessous: P> Réponse originale forte> P> Les propriétés d'objet JavaScript sont spécifiées pour avoir aucune commande, Bien que beaucoup de gens souhaitent que ce soit différent . Si vous avez besoin de commander, abandonnez toute tentative d'utilisation d'un objet et d'utiliser un tableau code> code> pour stocker des objets de valeur nominale: p> var obj = {
'20910930923': '20101102',
'foo': 'bar'
};
var orderedPropertyNames = ['20910930923', 'foo'];
Pensez simplement à penser au sommet de ma tête, mais pourriez-vous avoir un autre tableau avec les paires de la valeur clé Swed? p>
La réponse serait donc arrayée ['20101102'] = '20910930923'; P>
Lorsque vous triez le tableau, utilisez le premier élément (tableau [0]) en tant que clé pour obtenir la valeur dans la chrackeyvalueversed. P>
Essayez ceci:
// Some assoc list var offers = {'x':{..some object...}, 'jjj':{...some other object ...}}; // First element (see attribution below) return offers[Object.keys(offers)[0]]; // Last element (thanks to discussion on finding last element in associative array :) return offers[Object.keys(offers)[Object.keys(offers).length - 1]];
Stackoverflow.com/ Questions / 909003 / ...
Comment triez-vous le tableau?
Emmett: En faisant ceci: JamesRutherford.com/blog / 2010/08/07 / ...
Juste pour effacer la nomenclature - vous travaillez avec un objet JS. Un tableau en JavaScript est indexé par des entiers. Un objet est indexé par des chaînes / identifiant, et les propriétés sont accessibles comme ceci:
obj ['prop'] code> ou comme ceci:
obj.prop code>, il agit donc comme Un tableau associatif et B> un objet.