Je me demandais s'il y avait un moyen rapide d'extraire des clés de la matrice associative dans une matrice ou une liste séparée par des virgules à l'aide de JavaScript (JQuery est OK).
options = {key1: "value1", key2: "value2"};
Le résultat devrait être le tableau:
["key1", "key2"]
ou juste une chaîne:
"key1, key2"
Vous pouvez facilement obtenir un tableau d'entre eux via une boucle for
, par exemple:
var keys = [];
for(var key in options) {
if(options.hasOwnProperty(key)) { //to be safe
keys.Push(key);
}
}
Ensuite, utilisez keys
comment vous voulez, par exemple:
var keyString = keys.join(", ");
Vous pouvez le tester ici . Le .hasOwnProperty()
Vérification doit être en sécurité, au cas où tout le monde est géré avec le prototype d'objet et tel.
options = {key1: "value1", key2: "value2"};
keys = Object.keys(options);
Une façon jQuery de le faire:
var keys = [];
options = {key1: "value1", key2: "value2"};
$.each(options, function(key, value) { keys.Push(key) })
console.log(keys)
Vous pouvez maintenant utiliser
Object.keys(obj)
obtenir un tableau consistant des clés disponibles dans un objet. Mozilla a des informations d'utilisation et de disponibilité .
La plupart des grands navigateurs ont cette fonctionnalité intégrée maintenant, la méthode est Object.keys()
:
var keys = Object.keys(options);
//-> ["key1", "key2"]
Vous pouvez également utiliser un petit extrait pour implémenter cela dans les navigateurs qui ne le soutiennent pas:
Object.keys = Object.keys || (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty;
return function (o) {
if (typeof o != "object" && typeof o != "function" || o === null)
throw new TypeError("Object.keys called on a non-object");
var result = [];
for (var name in o) {
if (hasOwnProperty.call(o, name))
result.Push(name);
}
return result;
};
})();
Cet extrait fonctionne beaucoup la même chose que celui de Nick Cruaver avec 2 exceptions:
hasOwnProperty
.Cela (et les autres réponses ici) ne fonctionne pas autour d'un bogue de dénombrement IE. Vous pouvez trouver plus d'informations et un travail partiel autour de cela cette réponse ici .
Vous pouvez utiliser $.each()
dans jQuery:
function keyArray(obj) {
var rv = [];
$.each(options, function(key) { rv.Push(key); });
return rv;
}
alors
var keys = keyArray(options);
vous donne ["key1", "key2"]
En tant que tableau, que vous pourriez join
pour obtenir une chaîne.