【发布时间】:2018-05-21 19:59:21
【问题描述】:
在 Typescript(以及 Javascript)中,您可以使用点表示法或方括号表示法访问对象的属性:
object.property
object['property']
对后者使用一个具体的例子:
const user = {
firstName: 'John',
lastName: 'Doe'
}
const prop = 'firstName';
console.log(user[prop]); //"John"
我的问题是括号表示法是否/如何可用于数组属性,其中括号中的值是数组的路径。这是一个例子:
const user = {
firstName: 'John',
lastName: 'Doe',
nicknames: [
{ id: 1, value: 'Johnny'},
{ id: 2, value: 'JD'},
{ id: 3, value: 'Dude'}
]
}
const prop = 'nicknames[2].value';
console.log(user[prop]);
我使用console.log() 的目标是打印JD,但这个示例会失败,因为当然没有user 的属性称为nicknames[2].value;
如何以这种方式对数组属性使用括号表示法?
【问题讨论】:
-
看看lodash的get函数:lodash.com/docs/4.17.4#get
-
您可以使用
eval例如:console.log(eval("user." + prop));或创建一个解析字符串以提取属性名称和索引的函数。 -
如果您期待 JD,那么您还建议昵称 [2] 实际上是对象 id = 2 的元素。昵称 [2] 实际上指向 { id: 3, value: 'Dude '}。
-
@JanS
get()FTW!谢谢
标签: javascript typescript