Parcourez les structures imbriquées d'objets et de tableaux JavaScript à l'aide de chemins de chaîne
P粉897881626
2023-08-15 21:01:19
<p>J'ai une structure de données comme celle-ci :</p>
<pre class="brush:php;toolbar:false;">var someObject = {
'partie 1' : {
'nom' : 'Partie 1',
'taille' : '20',
'quantité' : '50'
},
'partie 2' : {
'nom' : 'Partie 2',
'taille' : '15',
'quantité' : '60'
},
'partie3' : [
{
'nom' : 'Partie 3A',
'taille' : '10',
'quantité' : '20'
}, {
'nom' : 'Partie 3B',
'taille' : '5',
'quantité' : '20'
}, {
'nom' : 'Partie 3C',
'taille' : '7,5',
'quantité' : '20'
}
]
};</pré>
<p>Je souhaite accéder aux données en utilisant les variables suivantes : </p>
<pre class="brush:php;toolbar:false;">var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";</pre>
<p>part1name doit être rempli avec la valeur de <code>someObject.part1.name</code>, qui est "Part 1". Il en va de même pour part2quantity, qui est complété à 60. </p>
<p>Existe-t-il un moyen d'y parvenir en utilisant du JavaScript pur ou du JQuery ? </p>
Ceci est désormais pris en charge via lodash en utilisant
_.get(obj, property)
. Veuillez vous référer à https://lodash.com/docs#getExemple tiré de la documentation :
Je viens de créer ceci sur la base d'un code similaire que j'avais déjà et cela semble fonctionner :
Utilisation :
Voir un exemple fonctionnel sur http://jsfiddle.net/alnitak/hEsys/.
EDIT Certaines personnes ont remarqué que ce code générera une erreur s'il transmet une chaîne dont l'index le plus à gauche ne correspond pas à une entrée correctement imbriquée dans l'objet. C'est une préoccupation valable, mais je pense qu'il est préférable d'utiliser
try / catch
块来处理,而不是使这个函数静默地返回undefined
lors de l'appel.