1

別の JSON 配列内に JSON 配列を作成しようとしています。
私はそれを正しくやったと思いますが、2番目の配列を呼び出すと未定義が返されます。

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が返されると思います。

私は何を間違えましたか?

EDIT : スクリプトはサーバーからそのような 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 に答える