Durchqueren Sie verschachtelte Strukturen von JavaScript-Objekten und -Arrays mithilfe von Zeichenfolgenpfaden
P粉897881626
2023-08-15 21:01:19
<p>Ich habe eine Datenstruktur wie diese:</p>
<pre class="brush:php;toolbar:false;">var someObject = {
'Teil 1' : {
'Name': 'Teil 1',
'Größe': '20',
'Menge': '50'
},
'Teil 2' : {
'Name': 'Teil 2',
'Größe': '15',
'Menge': '60'
},
'part3': [
{
'name': 'Teil 3A',
'Größe 10',
'Menge': '20'
}, {
'name': 'Teil 3B',
'Größe 5',
'Menge': '20'
}, {
'name': 'Teil 3C',
'Größe': '7,5',
'Menge': '20'
}
]
};</pre>
<p>Ich möchte über die folgenden Variablen auf die Daten zugreifen: </p>
<pre class="brush:php;toolbar:false;">var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";</pre>
<p>part1name sollte mit dem Wert von <code>someObject.part1.name</code> gefüllt sein, der „Teil 1“ ist. Das Gleiche gilt für part2quantity, das auf 60 aufgefüllt wird. </p>
<p>Gibt es eine Möglichkeit, dies mit reinem JavaScript oder JQuery zu erreichen? </p>
这现在可以通过lodash使用
_.get(obj, property)
来支持。请参阅https://lodash.com/docs#get文档中的示例:
我刚刚根据我已经有的一些类似代码创建了这个,它似乎可以工作:
用法:
在http://jsfiddle.net/alnitak/hEsys/上查看一个工作示例。
编辑 一些人注意到,如果传递一个字符串,其中最左边的索引不对应对象中正确嵌套的条目,这段代码将抛出错误。这是一个有效的关注点,但我认为最好在调用时使用
try / catch
块来处理,而不是使这个函数静默地返回undefined
。