0
votes

Comment utiliser des clés d'une JSON dynamique pour créer des matrices JavaScript?

J'ai une chaîne JSON au format [{"Date": "2019-01-01", "A": 0, "B": 0}] Code> généré par un script PHP où il peut y avoir n'importe quel nombre de clés avec différents noms de clés et valeurs.

Ce que j'essaie de faire est d'accéder à ces noms de clé lors de la création d'une matrice JS. P>

Ceci est facile. Lorsque je sais ce que sont les noms de clés: p> xxx pré>

Je viens de les pousser dans la matrice par nom de clé. Mais si je ne connais pas les noms de clé à l'avance (date, a et b dans cet exemple)? P>

J'ai essayé d'obtenir les noms de clé et de les utiliser au lieu de "date" statique "A" et 'B', qui ne fonctionne pas. Exemple: P>

const x = Object.keys(data[0]);
console.log(x[1]);


0 commentaires

3 Réponses :


0
votes

Vous étiez sur la bonne voie, mais la syntaxe était incorrecte. Vous devrez utiliser des données [i] [x [1]] à la place. Dans votre exemple "Data" n'a aucun attribut "x", il était donc provoqué une erreur.


1 commentaires

Merci, cela a en effet résolu mon problème.



0
votes

encase l'ensemble de l'ensemble x [1] entre crochets pour l'utiliser comme clé - sinon, vous essayez d'accéder au premier élément dans Data [i] .x qui n'existe pas: xxx


2 commentaires

Merci pour l'explication Jack, je comprends maintenant.


Pas de problème @ante, content d'aider.



1
votes

Essayez ceci,

p>

let a = [];
let b = [];
let c = [];

const data = [{"a":1, "b":2, "c":3}];

data.forEach( function(item, index) {
  Object.keys(item).forEach(function(i, ind) {
     eval(i+'.push('+item[i]+')');
  })
});
  
console.log('a is=', a, 'b is =', b, 'c is =', c);


2 commentaires

N'utilisez pas eval sauf s'il est complètement nécessaire - dans ce cas, ce n'est pas le cas.


Oui je sais @jackbashford. Mais cela je faisais pour lui .. S'il a plus de clé, il suppose de créer des clés vides basées sur des clés supplémentaires.