我目前正在从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
答案 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
}