Maison > Questions et réponses > le corps du texte
P粉7207169342023-08-16 19:39:27
Ceci est désormais pris en charge via lodash en utilisant _.get(obj, property)
. Veuillez vous référer à https://lodash.com/docs#get
Exemple tiré de la documentation :
var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.get(object, 'a[0].b.c'); // → 3 _.get(object, ['a', '0', 'b', 'c']); // → 3 _.get(object, 'a.b.c', 'default'); // → 'default'
P粉7331667442023-08-16 14:08:25
Je viens de créer ceci sur la base d'un code similaire que j'avais déjà et cela semble fonctionner :
Object.byString = function(o, s) { s = s.replace(/\[(\w+)\]/g, '.'); // 将索引转换为属性 s = s.replace(/^\./, ''); // 去掉前导点 var a = s.split('.'); for (var i = 0, n = a.length; i < n; ++i) { var k = a[i]; if (k in o) { o = o[k]; } else { return; } } return o; }
Utilisation :
Object.byString(someObj, 'part3[0].name');
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.