Rumah > Soal Jawab > teks badan
P粉7207169342023-08-16 19:39:27
Ini kini disokong melalui lodash menggunakan _.get(obj, property)
. Sila rujuk https://lodash.com/docs#get
Contoh daripada dokumentasi:
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
Saya baru saja mencipta ini berdasarkan beberapa kod serupa yang telah saya miliki dan ia nampaknya berfungsi:
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; }
Penggunaan:
Object.byString(someObj, 'part3[0].name');
Lihat contoh yang berfungsi di http://jsfiddle.net/alnitak/hEsys/.
EDIT Sesetengah orang menyedari bahawa kod ini akan membuang ralat jika lulus rentetan di mana indeks paling kiri tidak sepadan dengan entri bersarang betul dalam objek. Ini adalah kebimbangan yang sah, tetapi saya rasa lebih baik menggunakan try / catch
块来处理,而不是使这个函数静默地返回undefined
semasa membuat panggilan.