Je crée une API où les valeurs sont transmises par le serveur via un attribut de données, afin que le JS puisse récupérer des informations ... Mon JS fait un AJAX appeler et un objet JSON est retourné ...JavaScript: Convertir une chaîne et la concaténer pour créer dynamiquement une référence de propriété d'objet
{
"data": {
"results": {
"type": [
{
"cars" : {
"brands": {
"ford" : {},
"honda" : {}
}
}
}
]
}
}
}
afin d'obtenir la marque, je viens de taper
let brand = data.result.type[0].cars.brands.ford
cette façon, je peux obtenir les résultats dont j'ai besoin, mais je dois construire cette chemin dynamiquement, en joignant 2 partiels du chemin. Comme je l'ai dit au début de la question, certaines informations sont transmises via l'attribut de données et l'info est type[0].cars.brands.ford
... J'ai besoin de joindre ceci à data.result
dans mon code. Je suis actuellement être en mesure d'obtenir le résultat souhaité en utilisant eval()
, comme si
entry.querySelectorAll('[data-brand]').forEach((e) =>
let brand = eval('data.result.' + e.dataset.brand);
)
Je sais que beaucoup d'entre vous diront que l'utilisation eval()
est mauvais et je suis très au courant, mais je ne pouvais pas trouver un meilleur moyen de faire cela et il y a un autre problème, quand la marque, disons, nissan
n'est pas sur le JSON, j'obtiens une erreur TypeError: Cannot read property 'nissan' of undefined
... On pourrait éviter cela, en vérifiant si la propriété existe, avant continuer le code, mais je ne sais pas comment faire ce genre de test lorsque eval()
est impliqué.
... Alors au fond, ce que je dois, est une meilleure façon de construire dynamiquement le chemin de la propriété, qui peut être testé pour voir si la propriété existe ...
Merci à l'avance ...
Vous pouvez utiliser data.result [ 'property_name'] – Danmoreng
Merci pour la réponse, mais j'ai déjà essayé et cela n'a pas fonctionné ... –
Qu'est-ce qui ne fonctionne pas exactement? – Danmoreng