在Javascript中定义多维对象
我有一些关于汽车的数据,并试图创建一个功能,在那里我可以获得特定汽车的信息。我似乎无法正确设置数据列表的格式。我通过JSLint运行它,它告诉我它是错误的,但我不知道如何修复它在Javascript中定义多维对象,javascript,arrays,object,multidimensional-array,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"], [m
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);
您可以更改为以下内容:
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);
是正确的对象(由模型
和“2009”
索引)“2010”
应为单个对象;不能有两个值<代码>{Jaguar:…},{Volvo:…}错误,需要模型[“2009”]
{Jaguar:…,Volvo:}
- 再往下钻,
是错误的-每个索引只有一个值。在这种情况下,您希望此值是一个数组:捷豹:…,…,…
Jaguar:[…,…,…]
- 数组文字不能具有命名属性,因此
不正确;这应该是一个对象,[model:“XF”,id:“123”]
{model:“XF”,id:“123”}
- 只能对标识符使用点表示法
不是有效的标识符,因此2010
是一个错误。对于名称不是标识符的属性,必须使用括号表示法:models.2010
models[“2010”]
注意:
models[2010]
,因为它不能用点符号访问。JSLint是否明确表示“它错了”?[]
用于数组,数组只包含值列表{}
用于包含命名属性及其值的对象。JavaScript中没有关联数组。您还需要使数组成为对象。是的@fauxserious,没有。但我认为这是一个公平的怀疑,我不认为有理由投反对票。对不起@fauxserious,我不想指控你。=)我这么说是因为我看不出任何人有理由否决这个问题。如果有原因的话,任何投反对票的人至少应该对此发表评论。“2009”:{Jaguar:…}、{Volvo:…}
和车型。2010
是语法错误。(你改正后我会投赞成票。)是的。等一下。使用此编辑器很难生成代码。需要更多{
,}
确保代码正确的好方法是:将其放入REPL。幸运的是,JS在浏览器中运行,JS控制台只需要三个键。或者您可以使用jsbin、jsfiddle、stackoverflow片段或节点交互式shell,并从中复制粘贴正确的解决方案。有时存在测试解决方案不可行的问题;这不是其中之一:他在做他的答案,我在做我的,纯粹的惯例,而你,当然,在做你的下一个否决票:D(p.D:1。我不复制其他用户的答案,2。答案编辑,有效!)。这两个答案之间间隔10分钟但我知道这种事情发生的时候我们只是想帮忙。这是更好的答案,在我看来,我投了更高的票。
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);