在Javascript中定义多维对象

时间:2016-01-05 00:26:56

标签: javascript arrays object multidimensional-array

我有一些关于汽车的数据,我正在尝试创建一个功能,我可以获取特定汽车的信息。我无法正确格式化数据列表。我通过JSLint运行它,它告诉我这是错的,但我不知道如何解决它。

var models = {
  "2009": 
    {Jaguar: [model: "XF", id: "123"], [model: "XK", id: "456"], [model: "XJ", id: "789"]}, 
    {Volvo: [model: "XC70", id: "223"], [model: "V50", id: "256"]}, 
  "2010": 
    {Jaguar: [model: "XF", id: "323"], [model: "XK", id: "356"]}, 
    {Volvo: [model: "XC70", id: "423"], [model: "V50", id: "456"]}
  };
   //**** Show an example model here
    console.log(models.2010.Jaguar[0].model);

3 个答案:

答案 0 :(得分:3)

你可以改成这样的东西:

var models = {
    "2009":
            {
                Jaguar: [{model: "XF", id: "123"}, {model: "XK", id: "456"}, {model: "XJ", id: "789"}],
                Volvo: [{model: "XC70", id: "223"}, {model: "V50", id: "256"}]
            },
    "2010":
            {
                Jaguar: [{model: "XF", id: "323"}, {model: "XK", id: "356"}],
                Volvo: [{model: "XC70", id: "423"}, {model: "V50", id: "456"}]
            }
};
//**** Show an example model here
console.log(models['2010'].Jaguar[0].model);

答案 1 :(得分:3)

  • models是正确的对象(由"2009""2010"编制索引)。
  • models["2009"]应该是一个单独的对象;你不能拥有两个价值观。 {Jaguar:...}, {Volvo:...}错误,需要{Jaguar: ..., Volvo:}
  • 再次向下钻取Jaguar: ..., ..., ...是错误的 - 每个索引只有一个值。在这种情况下,您希望此值为数组:Jaguar: [..., ..., ...]
  • 数组文字不能具有命名属性,因此[model: "XF", id: "123"]不正确;这应该是一个对象,{model: "XF", id: "123"}
  • 您只能将点符号与标识符一起使用; 2010不是有效的标识符,因此models.2010是错误的。对于名称不是标识符的属性,必须使用括号表示法:models["2010"]

答案 2 :(得分:2)

var models = {
  "2009": {
    Jaguar: [{model: "XF", id: "123"}, {model: "XK", id: "456"}, {model: "XJ", id: "789"}], 
    Volvo: [{model: "XC70", id: "223"}, {model: "V50", id: "256"}]
  }, 
  "2010": {
    Jaguar: [{model: "XF", id: "323"}, {model: "XK", id: "356"}], 
    Volvo: [{model: "XC70", id: "423"}, {model: "V50", id: "456"}]
  }
};

console.log(models[2010].Jaguar[0].model);

注意:models[2010]因为无法使用点表示法访问它。