我正在为javascript中的表单使用一些特定的库。在这个库中,如果我有:
{
"id": 1,
"order": 0,
"title": "A title",
},
我可以这样做:
const field = 'order';
form.getState().values[field]
然后我会得到title的值。
现在假设我有这样的数据:
{
"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
。那么:如何从Tags
数组中的特定索引检索name
属性,并将Tags[0].name
作为字符串?
发布于 2018-10-15 01:37:48
一种有点讨厌但快速有效的方法是使用eval:
const field = 'Tags[0].name';
let stateValues = form.getState().values;
let tagName = eval(`stateValues.${ field }`)
另一种方法可能是使用regexp拆分和解析字段路径,然后按属性遍历对象属性。
https://stackoverflow.com/questions/52805246
复制相似问题