Si j'ai un objet JS comme:
var foo = { 'bar' : 'baz' }
Si je sais que cela foo
a cette structure clé / valeur de base, mais que je ne connais pas le nom de la clé, quel est le moyen le plus simple de l'obtenir? for ... in
? $.each()
? J'espère qu'il y a quelque chose de mieux ...
javascript
jquery
sprugman
la source
la source
Réponses:
Si vous souhaitez obtenir toutes les clés, ECMAScript 5 est introduit
Object.keys
. Ceci n'est pris en charge que par les navigateurs plus récents, mais la documentation MDC fournit une implémentation alternative (qui utilise égalementfor...in
btw):Bien sûr, si vous voulez les deux, clé et valeur, alors
for...in
c'est la seule solution raisonnable.la source
p
me donne la clé mais comment puis-je obtenir la valeur de la clé? Merci.Vous itérez à l'intérieur de l'objet avec une boucle for:
Ou
la source
foo[i]
pas l'être"_proto_"
?foo[i]
sii
c'est le cassome string
?Vous pouvez accéder à chaque clé individuellement sans itérer comme dans:
la source
const [firstKey, ...rest] = Object.keys(obj);
Compte tenu de votre objet:
Pour obtenir
bar
, utilisez:Pour obtenir
baz
, utilisez:En supposant un seul objet
la source
Une seule doublure pour vous:
la source
C'est la manière la plus simple et la plus simple. Voilà comment nous procédons.
Vous pouvez maintenant itérer sur les objets et accéder aux valeurs comme ci-dessous-
la source
TypeError
si vous vous attendez à ce qu'une clé soit un nombre. Parce que les clés sont toujours des chaînes.J'avais le même problème et c'est ce qui a fonctionné
la source
var value = person[key];
? De cette façon, vous n'avez pas besoin de connaître la clé de la valeur que vous souhaitez extraire.Référez MDN
la source
Je ne vois rien d'autre que
for (var key in foo)
.la source
Le moyen le plus simple est d'utiliser simplement Underscore.js:
Oui, vous avez besoin d'une bibliothèque supplémentaire, mais c'est tellement simple!
la source
Il n'y a pas d'autre moyen que
for ... in
. Si vous ne voulez pas utiliser cela (peut-être parce qu'il est légèrement inefficace de devoir testerhasOwnProperty
à chaque itération?), Utilisez une construction différente, par exemple un tableau de kvp:la source
Depuis que vous l'avez mentionné
$.each()
, voici une approche pratique qui fonctionnerait dans jQuery 1.6+:la source
Object.keys () La méthode Object.keys () renvoie un tableau des propres propriétés énumérables d'un objet donné, dans le même ordre que celui fourni par une boucle for ... in (la différence étant qu'une boucle for-in énumère les propriétés dans la chaîne de prototypes également).
Object.values () La méthode Object.values () retourne un tableau des propres valeurs de propriété énumérables d'un objet donné, dans le même ordre que celui fourni par une boucle for ... in (la différence étant qu'une boucle for-in énumère propriétés dans la chaîne de prototypes).
Pour en savoir plus, rendez-vous ici
la source
utiliser pour chaque boucle pour accéder aux clés dans Object ou Maps en javascript
Remarque: vous pouvez également utiliser
cela vous donnera comme cette sortie:
[bar];
la source
Eh bien,
$.each
c'est une construction de bibliothèque, alors quefor ... in
c'est js natif, qui devrait être mieuxla source
Vous pouvez utiliser la fonctionnalité Object.keys pour obtenir les clés telles que:
la source
pour afficher sous forme de chaîne, utilisez simplement:
la source
meilleure façon d'obtenir la clé / valeur de l'objet.
la source