2011-08-25 59 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