jul*_*ian 1 javascript arrays json
我正在尝试在另一个 JSON 数组中创建一个 JSON 数组。
我想我做得对,但是当我调用第二个数组时,它返回未定义。
JSON 文件:
var files = [
{"Files" : [
{"file1" : "file1"},
{"file2" : "file2"},
{"file3" : "file3"}
]},
{"Texts" : [
{"file4" : "file4"},
{"file5" : "file5"},
{"file6" : "file6"}
]}
];
Run Code Online (Sandbox Code Playgroud)
当我尝试此命令时,它可以工作 -
console.log(files[0]); // Works, returns the array
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个命令时它不起作用 -
console.log(files[0][1]); // Not working, return undefined
Run Code Online (Sandbox Code Playgroud)
我希望这将返回 file2。
我做错了什么?
编辑:脚本从服务器获取这样的 JSON 文件,脚本需要遍历 JSON。因此,将名称(文件、文本、文件 1、文件 2 等)视为未知。
console.log(files[0]["Files"]) // will return array with file 1-3
console.log(files[0]["Texts"]) // will return array with file 4-6
Run Code Online (Sandbox Code Playgroud)
或者
console.log(files[0].Files) // will return array with file 1-3
console.log(files[0].Texts) // will return array with file 4-6
Run Code Online (Sandbox Code Playgroud)
在你的例子中files[0][1],像这样为 json 工作
var files = [
[
{"file1" : "file1"},
{"file2" : "file2"},
{"file3" : "file3"}
],
[
{"file4" : "file4"},
{"file5" : "file5"},
{"file6" : "file6"}
]
];
Run Code Online (Sandbox Code Playgroud)
在这种情况下编辑您可以使用 nextfor-loop
for (var key in files[0])
{
files[0][key] // here key is "Files", this will return files 1-3
}?
Run Code Online (Sandbox Code Playgroud)
这个:
console.log(files[0]);
Run Code Online (Sandbox Code Playgroud)
并没有记录一个阵列,它是这样的阵列的第一个元素的对象。要访问内部数组,您必须获得该对象的“文件”属性:
console.log(files[0].Files[1]);
Run Code Online (Sandbox Code Playgroud)
将记录的不仅仅是字符串“file2”,而是整个对象,{ file2: "file2" }. 在 JavaScript 中,不能通过数字索引访问具有字符串属性名称的对象属性。也就是说,在对象中:
{ "foo": "hello world" }
Run Code Online (Sandbox Code Playgroud)
根本就没有[0]财产。JavaScript 中的数组也是对象,可以具有字符串命名的属性,但它们与数字索引属性的集合是分开的。
| 归档时间: |
|
| 查看次数: |
8731 次 |
| 最近记录: |