Mik*_*ikO 4 javascript variables jquery json hashmap
我正在创建一个Javascript/jQuery应用程序.
我需要处理一个表示a 的JSON响应HashMap,如下所示:
{
"accounts": {
"MediaFire": {
"provider": "MediaFire",
"usedStorage": "779680",
"totalStorage": "53687091200"
},
"4Sync": {
"provider": "4Sync",
"usedStorage": "620692",
"totalStorage": "16106127360"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用了一个pasing函数(我无法控制),它返回一个对象中解析的JSON响应result.
当我尝试访问4Sync这样的时候:
var usedStorage = result.accounts.4Sync.usedStorage; //doesn't work
Run Code Online (Sandbox Code Playgroud)
它不起作用,我认为这是因为开头的4 ...与其他对象相同的操作工作正常:
var usedStorage = result.accounts.MediaFire.usedStorage; //works
Run Code Online (Sandbox Code Playgroud)
我知道result对象包含对象4Sync,但我无法访问它.以下是Chrome控制台的屏幕截图:

有没有解决方法可以解决这个问题?
使用方括号:
var usedStorage = result.accounts["4Sync"].usedStorage;
Run Code Online (Sandbox Code Playgroud)
属性标识符可以以数字开头,但具有该.字符的成员表达式将仅允许有效的变量标识符(因为其他任何内容都不明确).要解决这个问题,您可以使用方括号语法,它等效但允许使用任何字符串.
如果你有兴趣,这是语法:
MemberExpression:
PrimaryExpression
FunctionExpression
MemberExpression[表达式]
MemberExpression.IdentifierName
注意方括号可以包含任何表达式,但.只能跟一个IdentifierName(基本上,任何有效的标识符,加上ES5中的保留字).