Lintas struktur bersarang objek dan tatasusunan JavaScript menggunakan laluan rentetan
P粉897881626
2023-08-15 21:01:19
<p>Saya mempunyai struktur data seperti ini:</p>
<pre class="brush:php;toolbar:false;">var someObject = {
'bahagian 1' : {
'nama': 'Bahagian 1',
'saiz': '20',
'qty' : '50'
},
'bahagian 2' : {
'nama': 'Bahagian 2',
'saiz': '15',
'qty' : '60'
},
'bahagian3' : [
{
'nama': 'Bahagian 3A',
'saiz': '10',
'qty' : '20'
}, {
'nama': 'Bahagian 3B',
'saiz': '5',
'qty' : '20'
}, {
'nama': 'Bahagian 3C',
'saiz': '7.5',
'qty' : '20'
}
]
};</pre>
<p>Saya mahu mengakses data menggunakan pembolehubah berikut: </p>
<pre class="brush:php;toolbar:false;">var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";</pre>
<p>part1name hendaklah diisi dengan nilai <code>someObject.part1.name</code>, iaitu "Bahagian 1". Begitu juga dengan part2quantity, yang berlapik hingga 60. </p>
<p>Adakah terdapat cara untuk mencapai ini menggunakan JavaScript atau JQuery tulen? </p>
Ini kini disokong melalui lodash menggunakan
_.get(obj, property)
. Sila rujuk https://lodash.com/docs#getContoh daripada dokumentasi:
Saya baru saja mencipta ini berdasarkan beberapa kod serupa yang telah saya miliki dan ia nampaknya berfungsi:
Penggunaan:
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.