J'ai une chaîne JSON au format
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> 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> [{"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. const x = Object.keys(data[0]);
console.log(x[1]);
3 Réponses :
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. p>
Merci, cela a en effet résolu mon problème.
encase l'ensemble de l'ensemble x [1] code> entre crochets pour l'utiliser comme clé - sinon, vous essayez d'accéder au premier élément dans Data [i] .x code> qui n'existe pas:
Merci pour l'explication Jack, je comprends maintenant.
Pas de problème @ante, content d'aider.
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);
N'utilisez pas eval code> 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.