1

我正在尝试在另一个 JSON 数组中创建一个 JSON 数组。
我认为我做对了,但是当我调用第二个数组时,它返回未定义。

JSON文件:

var files = [
    {"Files" : [
        {"file1" : "file1"},
        {"file2" : "file2"},
        {"file3" : "file3"}
    ]},

    {"Texts" : [
        {"file4" : "file4"},
        {"file5" : "file5"},
        {"file6" : "file6"}
    ]}
];

当我尝试此命令时,它可以工作-

console.log(files[0]); // Works, returns the array

但是当我尝试这个命令时它不起作用 -

console.log(files[0][1]); // Not working, return undefined

我希望这将返回 file2。

我做错了什么?

编辑:脚本从服务器获取 JSON 文件,脚本需要遍历 JSON。因此,将名称(文件、文本、文件 1、文件 2 等)视为未知。

4

3 回答 3

5
console.log(files[0]["Files"])  // will return array with file 1-3
console.log(files[0]["Texts"])  // will return array with file 4-6   

或者

console.log(files[0].Files)  // will return array with file 1-3
console.log(files[0].Texts)  // will return array with file 4-6

在你的例子files[0][1]中,像这样为 json 工作

var files = [
    [
        {"file1" : "file1"},
        {"file2" : "file2"},
        {"file3" : "file3"}
    ],
    [
        {"file4" : "file4"},
        {"file5" : "file5"},
        {"file6" : "file6"}
    ]
];  

编辑
在这种情况下,您可以使用下一个for-loop

for (var key in files[0])
{
   files[0][key] // here key is "Files", this will return files 1-3       
}​
于 2012-12-24T15:09:30.547 回答
5

这:

console.log(files[0]);

不记录数组,是数组的第一个元素的对象。要获取内部数组,您必须获取该对象的“文件”属性:

console.log(files[0].Files[1]);

这将记录的不仅仅是字符串“file2”,而是整个对象,{ file2: "file2" }. 在 JavaScript 中,具有字符串属性名称的对象属性不能通过数字索引访问。也就是说,在对象中:

{ "foo": "hello world" }

根本没有[0]财产。JavaScript 中的数组也是对象,可以具有以字符串命名的属性,但它们与数字索引属性的集合是分开的。

于 2012-12-24T15:09:49.270 回答
2

数组位于 Files 属性内:

console.log(files[0].Files[0]);
console.log(files[0].Files[1]);
于 2012-12-24T15:10:06.790 回答