9
votes

Comment accéder à la première clé d'un tableau «associatif» en JavaScript?

J'ai un tableau JS 'associatif', avec

for (var i in sorted)


4 commentaires

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'] ou comme ceci: obj.prop , il agit donc comme Un tableau associatif et un objet.


4 Réponses :


1
votes

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 Array [0] 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.

http://www.hunlock.com/blogs/mastering_javascript_arrays

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.


7 commentaires

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.



3
votes

Mise à jour 2021 forte>

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'];


0 commentaires

0
votes

Pensez simplement à penser au sommet de ma tête, mais pourriez-vous avoir un autre tableau avec les paires de la valeur clé Swed?

La réponse serait donc arrayée ['20101102'] = '20910930923';

Lorsque vous triez le tableau, utilisez le premier élément (tableau [0]) en tant que clé pour obtenir la valeur dans la chrackeyvalueversed.


0 commentaires

2
votes

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]];


0 commentaires