2011-03-01 4 views
1

Object.keys(obj) renvoie Array des chaînes qui sont les clés d'un objet.
Mais que se passe-t-il si l'objet est un tableau et que je veux la liste des index entiers qu'il a?
Existe-t-il un moyen simple d'extraire ceci sans avoir à les utiliser tous?Javascript: obtenir toutes les clés entières et toutes les valeurs dans un tableau?

Vous pouvez également utiliser un moyen simple pour implémenter une sorte de Object.values() pour obtenir un Array des valeurs (avec les clés normales Array normales) d'un objet?

+0

Pourquoi diable voudriez-vous un tableau de clés ici? Commencez simplement à 0 et passez à 'array.length'. –

+1

Il peut arriver que votre tableau soit presque vide (la plupart des valeurs numériques ne sont pas définies), par conséquent on peut vouloir éviter, par exemple, de boucler jusqu'à 1000000 pour trouver les 32 seules valeurs existantes. – Andrea

Répondre

-1

Selon le final final final final draft de ES5, il semble qu'il n'y a rien comme ce que vous recherchez.

Je pense que tout ce que vous pouvez faire est

var numericKeys = Object.keys(myObject).filter(function (key) { 
    return parseInt(key, 10).toString() === key; 
}); 
+0

chrome ne comprend pas 'myObject.keys()' – shoosh

+0

Désolé, j'ignorais le fait que 'keys' est un attribut de' Object', pas de 'Object.prototype', donc il ne peut pas être appelé comme une méthode. J'ai mis à jour ma réponse. – Andrea

+0

Vous oubliez également le fait que 'Object.keys()' renvoie uniquement des chaînes, même lorsque la clé est un nombre, d'où ma référence à 'parseInt'. S'il vous plaît essayez de lire et de comprendre la question avant de répondre. – shoosh

Questions connexes