在javascript中构建对象会返回错误

时间:2016-08-28 00:21:05

标签: javascript associative-array

我正在构建一个数组作为对象,我写的函数最终会爬行。它是静态数据,因此一旦填充,就不会添加或删除任何内容,但我无法正确格式化。

如果我只有一个记录的数据,那么变量声明很有效:

   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':....
   },
  {
    '1':...
   }
]

这是一个对象数组,其中的对象可以是您的数据记录。

我在代码中看到的问题是

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

方括号表示数组,它是数据列表,无论它们是字符串,数字还是对象。

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

Curly brace是对象文字或关联数组。

{ '0': '...' }

EDITED

人们说数组是对象文字,因为它们在运行时表现得像一个。您正在定义数组和对象文字,因此有一些特定的规则可以发挥作用。在您的代码中,如果您改为编写

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

这可行,但正如你所看到的那样有点令人费解。在编写数组文字时,它是逗号分隔值的列表,而不是关联的键。如果需要关联键,请使用花括号。

如果您想了解更多信息,请搜索JSON数据格式。