数字作为标识符

时间:2015-07-03 20:16:08

标签: javascript jquery arrays json

我目前正在从JSON数组中提取数据,如下所示

    "title": Title,
    "chapters": {
        "13c": {
            "words": 123,
            "spaces": 321
        },
        "15d": {
            "words": 123,
            "spaces": 321
        },
        "38h": {
            "words": 123,
            "spaces": 321
        }
    }

当我尝试使用以下

选择13c(如果存在)时
if(book.chapters.13c){
     console.log(book.chapters.13c);
}

我收到以下错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

2 个答案:

答案 0 :(得分:2)

对于您发现自己无法使用.语法的每种情况,请改用[]语法:

console.log(book.chapters['13c']);

请注意,[]语法和.语法是等效的,但[]语法更灵活,因为它对属性键没有限制。例如,如果您的属性键包含空格:

book.chapters['hello world'];

如果您的属性键需要从变量构造:

book.chapters[somevar + '-' + someothervar];

在javascript中,foo.bar只是foo['bar']的缩写。

答案 1 :(得分:1)

你可以这样做:

if(book.chapters["13c"]) ...

这在功能上等同于你想要的。通常,您不应该在标识符的开头使用Numbers,但它是有效的。由于它被解析为字符串,因此它是相同的。

这相当于创建一个像这样的对象:

{
  "0":true,
  "1":"testing",
  "2":"yup",
  "length": 3
}