2011-08-25 136 views
0

我正在构建一个web应用程序,在该应用程序中,我使用以下对象构建排序列表:
{head: {subhead: [list_items], subhead: [list_items]}, head: {subhead: [list_items]}}
我的问题是,我必须确保标题和副标题始终按照一定的顺序。这很复杂,因为稍后可能添加的标题和子标题也需要遵循这个顺序。所以我认为通知解析器的命令的唯一方法是给它一些像这样的数据:
{heads: [head1, head2, head3], subheads: {head1: [subhead1_1, subhead1_2], head2: [subhead2_1, subhead2_2, subhead2_3]}},
但这让我觉得过于冗长,并且会重复原始数据结构中的数据。在排序列表中排序标题的问题

+0

这似乎有点复杂。也许你应该告诉我们你想要解决的问题的类型,也许我们可以这样建议一个更好的数据结构。 –

+0

我试图创建一系列列表,分类为标题和小标题(前{'食物:{水果:[苹果,桔子],蔬菜:[胡萝卜,豌豆]},动物:{家庭:[猫,狗] ,wild:[狮子,熊]}}',其中标题和副标题遵循特定顺序。所以我总是希望食物在动物和食物内被列出,我要在水果面前吃蔬菜。我想我的问题是由于关联数组(在这种情况下是对象)本质上是无序的,所以我需要一种给他们命令的方式或一种表达数据的不同方式。 – ShadesOfGrey

回答

0

你可能会使用一个数组(或你自己的结构),因为你希望它被排序。您自己的结构可能是这样的:

function Head(name) { 
    this.name = name; 
    this.arr = []; 
} 

因此,而不是结构:

var thing = { 
    food: {fruit: [apples, oranges], vegetables: [carrots, peas]}, 
    animals: {domestic: [cat, dog], wild: [lion, bear]} 
} 

你可以这样做:

var thing = [new Head('food'), new Head('animals')] 

然后:

thing[0].arr.push('apples'); 
thing[0].arr.push('oranges'); 

当然,您不必制作一个类,因为您实际上可以将属性附加到JavaScript中的数组。但是制作数据结构会更加痛苦。

+0

非常感谢!该对象结构可以像数组一样被复制:{head:[{subhead:[items]},{subhead:[items]}]},它解决了JSON序列化的问题! – ShadesOfGrey