2016-08-28 11 views
0

私はオブジェクトとして配列を構築していますが、私が書いている関数は最終的にクロールされます。それは静的なデータなので、データが追加されたり削除されたりすることはありませんが、正しくフォーマットするのは難しいです。javascriptでオブジェクトをビルドするとエラーが返されます

私はデータの1つのレコードだけの価値を持っている場合は、変数宣言は素晴らしい作品:

var panel = { 
    'url':'http://www.minorworksoflydgate.net/Testament/Clopton/nw_test_1.html', 
    'x':[1.63, 3.53], 
    'y':[6.58, 7.26], 
    'z':[2.05, 2.81] 
    } 

しかし、私は情報の第二の記録の価値を追加しようとします

var panel = {'0':['url':'http://www.minorworksoflydgate.net/Testament/Clopton/sw_test_1.html',   
     'x':[-9.38, -7.47], 
     'y':[6.80, 7.49], 
     'z':[-8.18, -8.85]],'1':[ 
     'url':'http://www.minorworksoflydgate.net/Testament/Clopton/nw_test_1.html', 
     'x':[1.63, 3.53], 
     'y':[6.58, 7.26], 
     'z':[2.05, 2.81]} 
     } 

私が手次のエラーが発生しました:SyntaxError: Unexpected token ':'. Expected either a closing ']' or a ',' following an array element.私は考えることができるすべての組み合わせを試しました:データの各塊を中かっこで囲み、明示的にキーを宣言し、キーを宣言しません。すべてこのエラーのバリエーションをもたらします。私はこの情報の書式設定の面でどこをうんざりしていますか?

答えて

1

奇妙な方法で結合オブジェクトのリテラルと配列。おそらくあなたが探しているものでしょう

[ 
    { 
    '0':.... 
    }, 
    { 
    '1':... 
    } 
] 

これはオブジェクトがデータレコードになることができるオブジェクトの配列です。

何が問題であり、コード内で参照すること

[ '0': '.....'] //illegal 

角カッコは、彼らは文字列、数値、またはオブジェクトであるかどうかのデータのリストである、配列を表しています。

[ '0', {}, 'blah', 1.2] //legal 

中括弧はオブジェクトリテラルまたは連想配列です。

{ '0': '...' } 

EDITED

人々は、実行時にいずれかのように振る舞うので、配列はオブジェクトリテラルであると言います。あなたは配列とオブジェクトのリテラルを定義しているので、特別なルールがあります。あなたの代わりに

var panel = []; 
var index1 = [] 
panel['0'] = index1 
index1['url'] = 'http://'; 
index1['x'] = 1.2; 
var index2 = []; 
index2['url'] = 'http://'; 

を書いた場合、あなたのコードでは、これは動作しますが、あなたはそれが少し複雑で見ることができるように。配列リテラルを書くときは、コンマで区切られた値のリストであり、関連するキーではありません。関連するキーが必要な場合は、中かっこを使用します。

詳細については、JSONデータ形式を検索してください。

+0

コメントありがとうございます。だから、人々がJavascriptの連想配列がオブジェクトになり、Javascriptのすべての配列がオブジェクトリテラルであると言うと、それはどういう意味ですか?私はもともと角括弧ですべてをやっていましたが、連想要素( 'x':[ - 9.38、-7.47]など)のため明らかに機能しませんでした。実際の問題がアレイの不正な形式であるように聞こえますが、将来の参考のためにその違いが何であるかをよく理解したいと思います。 – medievalmatt

+0

さらに詳しい情報を追加しました。 –

関連する問題