0

これはARRAY1です

var array_1 = ["51b59c162de88", [
    ["parties", 0.0, 0.011]
]]
["51b59c1b4f52f", [
    ["star-speak", 0.0, 0.006],
    ["parties", 0.0, 0.011]
]]

これはARRAY2です

var array_2 = [{
    key: "51b59c162de88",
    values: ["parties", 0.0, 0.011]]
},
    {
        key: "51b59c162de94",
        values: [
            ["star-speak", 0.0, 0.006],
            ["parties", 0.0, 0.011]
        ]
    }, ];
  • 配列 1 と配列 2 の正確な違いは何ですか。

  • 彼らのデータにアクセスするにはどうすればよいですか?

私はjsonが初めてです!!!!

これは、元のjsonファイルがどのように見えるかです!!!! http://jsfiddle.net/rjZxJ/

4

2 に答える 2

1

解析された JSON を想定すると、次のようになります。

var a = [
    ["51b59c1bbae1c", [["parties", 0.0, 0.011]]],
    ["51b59c1b4f52f", [["star-speak", 0.0, 0.006], ["parties", 0.0, 0.011]]],
    ["51b59c2635997", [["fashion", 0.002, 0.006], ["parties", 0.0037, 0.011], ["royal-challenge", 0.002, 0.006]]],
    ["51b59c157b564", [["parties", 0.0, 0.028], ["indulge", 0.0, 0.006], ["live-responsibly", 0.0, 0.006], ["fashion", 0.0, 0.006]]]
]

次に、要素を反復処理できます。

a.forEach( function( element ) {
    var id = element[0];
    var items = element[1];
    items.forEach( function item ) {
        var name = item[0];
        var float1 = item[1];
        var float2 = item[2];
    });
});

たとえば、これらをドキュメントに出力する方法: http://jsfiddle.net/9VyGM/

キーと値のオブジェクトを回避すると、圧縮されていない場合、JSON のサイズが大幅に削減されます。これは、キーが常にあらゆる場所で複製されるためです。

JSON の 5 つの 3D ポイントの配列のようなものを考えてみましょう。

[
    {"x": 0.5, "y": 0.5, "z": 0.5},
    {"x": 0.5, "y": 0.5, "z": 0.5},
    {"x": 0.5, "y": 0.5, "z": 0.5},
    {"x": 0.5, "y": 0.5, "z": 0.5},
    {"x": 0.5, "y": 0.5, "z": 0.5}
]

配列を使用するだけで、何が何を表すかについてコードで合意している場合とサイズを比較します。

//The code will know that x is 0th element, y is 1th element
//and z is 2th element
[
    [0.5, 0.5, 0.5],
    [0.5, 0.5, 0.5],
    [0.5, 0.5, 0.5],
    [0.5, 0.5, 0.5],
    [0.5, 0.5, 0.5]
]

のような短いキーを使用しても、サイズの 54% しかないことがわかりますx。より長いキーの場合、状況はさらに悪化します。

于 2013-06-26T10:44:04.063 に答える
0

両方の配列にタイプミスがあり、エラーが発生します!

Array1 は現在、次のパターンの文字列と配列の (壊れた) 配列です: [str1, [[str2, str3, str4]], [str5, [str6, str7, str8], [str9, str10, str11]]].

Array2 はオブジェクトの配列です: [obj1, obj2].

あなたが実際に望んでいたのは次のようなものだったと思います:

var array_1 = [
    [
        "51b59c162de88",
        ["parties", 0.0, 0.011]],
    ],
    [
        "51b59c1b4f52f",
        ["star-speak", 0.0, 0.006],
        ["parties", 0.0, 0.011]
    ]
];

-- これは配列の配列であり、次のとおりです。

var array_2 = [
    {
        key: "51b59c162de88",
        values: [["parties", 0.0, 0.011]]
    },
    {
        key: "51b59c162de94",
        values: [["star-speak", 0.0, 0.006], ["parties", 0.0, 0.011]]]
    }
];

-- これは、キー文字列と値の配列を含むオブジェクトの配列です。

于 2013-06-26T10:34:40.813 に答える