This question already has answers here:
Dynamically access object property using variable
                                
                                    (15个答案)
                                
                        
                4年前关闭。
            
        

我有以下目的...

var object = doc.$set;
console.log(object);


上面的console.log输出以下内容...

{
  createdBy: 'o5Wye6LLMGNXLn7HY',
  createdAt: Mon Apr 11 2016 15:25:35 GMT+1000 (AEST),
  'contactDetails.orderedBy': 'MvCun8p6vxndj3cr8',
  updatedAt: Mon Apr 11 2016 18:04:14 GMT+1000 (AEST)
}


如何从'contactDetails.orderedBy'获取值?

这样的事情没问题...

var createdBy = doc.$set.createdBy;


但这不是...

var orderedBy = doc.$set.contactDetails.orderedBy;


有没有一种方法可以代替我使用javascript提取值?
像是将其转换为字符串,然后将其拆分或沿这些行转换?这可能吗?

谢谢

最佳答案

尝试var orderedBy = doc.$set['contactDetails.orderedBy'];

由于对象键是数字文字或有效的标识符名称,因此必须引用键contactDetails.orderedBy以避免语法错误。


  如果属性名称是数字文字或有效的标识符名称,则只能省略引号。


对于createdBy键,您可以检索object.createdBy之类的值,但是对于contactDetails.orderedBy则需要引用,因此可以通过object[contactDetails.orderedBy]进行访问。

09-25 17:18