Javascript 访问嵌套对象键的变量名称
抱歉,如果这个标题没有意义,但我找不到一个方法来描述这一点。我已经搜索了很多,但不断得到的答案访问一个单一的水平 我有一个目标:Javascript 访问嵌套对象键的变量名称,javascript,Javascript,抱歉,如果这个标题没有意义,但我找不到一个方法来描述这一点。我已经搜索了很多,但不断得到的答案访问一个单一的水平 我有一个目标: var o = { id: 1, customer: { name: 'Barry Scroggins' } } 我有一个访问器: var keyName = 'customer' 我知道我可以通过以下方式获得对象的客户部分: o[keyName] // { name: 'Barry Scroggins' } 但是,在我的
var o = {
id: 1,
customer: {
name: 'Barry Scroggins'
}
}
我有一个访问器:
var keyName = 'customer'
我知道我可以通过以下方式获得对象的客户部分:
o[keyName] // { name: 'Barry Scroggins' }
但是,在我的应用程序中,我希望使用一组动态创建的变量访问customer对象的“name”部分。因此,我的应用程序生成了以下字符串:
var accessors = 'customer.name';
然后在“.”处拆分,以获得一个条目数组,但无论我尝试什么,都无法直接访问customer name部分
我知道我可以这样做:o['customer']['name']
,但我需要动态地建立这些密钥,它们可以有任意级别(即customer.address.zipcode
)
这是可能的,还是一种可怕的、可怕的建造方式?如果是这样,您有其他选择吗?您可以分割路径并缩小对象 函数getValue(o,路径){ 返回路径.split('.').reduce(函数(o,k){ 返回(o |{})[k]; },o); } 变量o={ id:1, 客户:{ 姓名:“巴里·斯克罗金斯” } }, 访问者='customer.name';
log(getValue(o,访问器))代码>虽然可能,但这是一种可怕的、可怕的构建方式。把一切都放在VarCustomer中,甚至不要创建VarO。对于那些没有更合理选择的人,请参考尼娜·斯科尔斯的答案。不过OP确实有更好的方法。@TurnipEntropy我同意,整个事情很混乱,但几乎所有东西都是从后端api中提取出来的,然后转储到一个模板中,用于呈现网页。虽然是重复的,但我更喜欢下面给出的答案。