我正在使用一些特定的库来处理javascript中的表单。在这个库中,如果我有:
{
"id": 1,
"order": 0,
"title": "A title",
},
我可以做到:
const field = 'order';
form.getState().values[field]
然后我将获得标题值。
现在让我们说我有这个数据:
{
"id": 1,
"order": 0,
"title": "A title",
"Tags": [
{
"id": 1,
"name": "Tag one",
},
{
"id": 2,
"name": "Tag two",
}
]
},
我也可以访问一个字符串,其中包含标签的字段名称,数组的索引以及要检索的字段。但是我把所有这些都放在一个字符串中:
Tags[0].name
如果我这样做:
const field = 'Tags[0].name';
form.getState().values[field]
它将返回undefined
,因为它将尝试在对象中找到键Tags[0].name
。因此:如何将name
作为字符串,从Tags
数组中的特定索引中检索Tags[0].name
属性?
答案 0 :(得分:1)
使用eval有点讨厌,但快速而可行的方法是
const field = 'Tags[0].name';
let stateValues = form.getState().values;
let tagName = eval(`stateValues.${ field }`)
其他方法可能是使用regexp拆分和解析字段路径,然后逐个遍历对象属性。