1

这些是我的 JSON 对象。

({
"0":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86040788&amp",
"1":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87126537&amp",
"2":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915833&amp",
"3":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87317484&amp",
"4":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86548283&amp"
})

我使用 Ajax 获取它们,这就是我获取它们的方式:

data[0]data[4].

为什么data.1等不工作?我不明白为什么我可以访问这样的对象data[0],因为它们不是数组。

4

3 回答 3

3

为什么 data.1 等不起作用?

那是因为data.1根据 Javascript 的语法是无效的语法。打开浏览器控制台并尝试:

var obj = {};
obj[0] = "test";
obj.0; //SyntaxError: Unexpected number

我不明白为什么我可以访问像这个数据 [0] 这样的对象,因为它们不是数组。

In javascript, arrays and map/dictionary/association array are the same thing. You can access by either object[key] syntax or object.key syntax. Only restriction is that it should be parseable by the parser (it should be an identifier), otherwise it would fail -- like the case you have. Another example:

var obj = {"test-data":1, "test": 2};
obj["test"]           // 2
obj.test              // 2
obj["test-data"];     // 1
obj.test-data         //ReferenceError: data is not defined
      //^ is a <MINUS> character, parsed as (obj.test - data)
于 2013-04-13T03:35:06.643 回答
1

使用对象:对象和属性

对象属性名称可以是任何有效的 JavaScript 字符串,也可以是可以转换为字符串的任何内容,包括空字符串。但是,任何不是有效 JavaScript 标识符的属性名称(例如,具有空格或破折号或以数字开头的属性名称)只能使用方括号表示法访问。当要动态确定属性名称时(当直到运行时才确定属性名称时),此表示法也非常有用。示例如下:

于 2013-04-13T03:31:01.823 回答
0

因为 json var name 不能从数字开始

于 2013-04-13T03:19:04.963 回答