comment récupérer les clés de tableau avec jQuery?

Bon après-midi. J'ai un tableau avec des clés et des valeurs. Je dois ensuite aller chercher les clés du tableau et non les données qu'elles contiennent. Je veux faire ça avec jQuery. Je sais par exemple que PHP dispose d'une fonction appelée array_keys(); qui prend le tableau comme paramètre et vous donne un tableau avec chaque clé dans chaque index.

C'est ce que j'ai trouvé, et ça fonctionne... le seul problème est qu'il semble donc unefficent;

var foo = [];
foo['alfa'] = "first item";
foo['beta'] = "second item";

for (var key in foo) {
    console.log(key);
}

de sortie;

alfa
beta
<!-Mais y a-t-il une fonction prédéfinie pour cela, comme dans PHP ou tout autre moyen plus efficace de l'obtenir?

33
demandé sur Stefan Konno 2009-08-10 14:49:07

6 réponses

vous pouvez utiliser le each fonction:

var a = {};
a['alfa'] = 0;
a['beta'] = 1;
$.each(a, function(key, value) {
      alert(key)
});

il y a plusieurs raccourcis sympas/astuces: vérifier les détails sanglants ici

59
répondu dfa 2009-08-10 11:04:44

en utilisant jQuery, la façon la plus facile d'obtenir le tableau des clés de l'objet est la suivante:

$.map(obj, function(element,index) {return index})

Dans votre cas, il sera de retour ce tableau: ["alfa", "beta"]

49
répondu dugokontov 2013-03-20 13:52:10
console.log( Object.keys( {'a':1,'b':2} ) );
27
répondu Andy 2012-03-28 17:58:13

Utilisez un objet (paire clé / valeur, le JavaScript le plus proche a un tableau associatif) pour ceci et non l'objet tableau. A part cela, je crois que c'est la manière la plus élégante!--2-->

var foo = {};
foo['alfa'] = "first item";
foo['beta'] = "second item";

for (var key in foo) {
        console.log(key);
}

Note: JavaScript ne garantit aucune commande particulière pour les propriétés. Donc ne vous attendez pas la propriété qui a été définie premier abord, il pourrait être le dernier.

EDIT:

En réponse à votre commentaire, je crois que cet article résume le mieux les raisons pour lesquelles les tableaux en JavaScript ne devraient pas être utilisés de cette façon -

6
répondu Russ Cam 2009-08-10 11:09:16

Ne pas Réinventer la Roue, Utilisez Soulignement

je sais que l'OP spécifiquement mentionnés jQuery mais je voulais mettre une réponse ici pour introduire les gens à l'aide de Soulignement bibliothèque si elles ne sont pas déjà au courant.

en tirant le keys méthode trait de Soulignement de la bibliothèque, vous pouvez simplement faire ce qui suit:

_.keys(foo)  #=> ["alfa", "beta"]

en Plus, il y a une pléthore d'autres fonctions utiles qui valent le parcourant.

5
répondu Joshua Pinter 2018-03-09 06:03:25

j'utilise quelque chose comme cette fonction que j'ai créé...

Object.getKeys = function(obj, add) {
    if(obj === undefined || obj === null) {
        return undefined;
    }
    var keys = [];
    if(add !== undefined) {
        keys = jQuery.merge(keys, add);
    }
    for(key in obj) {
        if(obj.hasOwnProperty(key)) {
                keys.push(key);
        }
    }
    return keys;
};

je pense que vous pourriez mettre obj à soi ou quelque chose de mieux dans le premier test. Il semble que parfois je vérifie si elle est vide aussi, donc je l'ai fait de cette façon. Je ne pense pas non plus que {} soit une objection.* ou au moins il y a un problème pour trouver la fonction getKeys sur L'objet de cette façon. Peut-être que vous êtes censé mettre prototype en premier, mais cela semble causer un conflit avec GreenSock etc ..

0
répondu MistereeDevlord 2014-05-01 20:48:28