Récupération dynamique des clés de la paire clé-valeur JSON Array - Javascript
J'ai une question qui aimerais solliciter votre expertise.
C'est un tableau JSON que j'ai:
[{"A":20,"B":32,"C":27,"D":30,"E":40}]
Ce que je voudrais faire est de récupérer les touches (A, B, C, D, E) à partir du tableau JSON au lieu de valeurs. Je suis en mesure de récupérer les valeurs mais pas les clés.
Je suis en utilisant ce afin de récupérer les valeurs dynamiquement:
function calculateSum(jsonArray) {
var result = 0;
for (var i = jsonArray.length - 1; i >= 0; --i)
{
var o = jsonArray[i];
A = o.A;
B = o.B;
C = o.C;
D = o.D;
E = o.E;
result = A + B + C + D + E;
return result;
}
return result;
}
De même, que dois-je faire pour récupérer le clés à l'aide de JavaScript?
source d'informationauteur Queryer
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de D3.js que votre balise implique? Parce que dans ce cas, vous pouvez simplement utiliser
d3.keys()
:Si vous voulez que la somme de toutes les valeurs, vous pourriez être mieux à l'aide de
d3.values()
etd3.sum()
:De tous les courants posté des solutions ont un problème. Aucun d'entre eux de vérifier pour
de l'objet.hasOwnProperty(prop)
lors de l'itération sur un objet à l'aide d'un...en boucle. Cela pourrait causer des touches fantômes apparaissent si les propriétés sont ajoutées au prototype.Citant Douglas Crockford
Ajout d'une vérification pour
hasOwnProperty
à maerics' excellente solution.Utilisation
for .. in
:défensivement
Y compris @Sahil défensif de la méthode...
Essayez d'utiliser le JavaScript
..
déclaration:Je pense que c'est le plus simple.
Résultat :
Un
for-in
-boucle fait le tour. Sur un objet, il ressemble à ceci:De l'essayer. C'est simple:
Je pense que ce doit être analysé de manière récursive comme ci-dessous
utilisation:
getKeys([],{"a":"1",n:{c:"3",e:{ f:4,g:[1,2,3]}}})
Résultat:
["a", "n", "c", "e", "f", "g"]
arrêter de réinventer la roue !
MDN