2014-11-16 595 views
3

我正在Angular工作,目前主要關注過濾嵌套對象。這裏是我的對象的結構:Angular:對象結構最佳實踐

$scope.subjectBin = { 
    "Faculty of Engineering": { 
      "ECE": [{<course-object>},{<course-object>}], 
      "CHEM: [{<course-object>}] 
     }, 
    "Faculty of Science": { 
      "BIOL: [{<course-object>},...], 
      ... 
     }, 
     ... 
} 

當我和過濾此對象,建立新的功能,並在分層手風琴呈現此,我想我應該改變這個對象的設計工作。

有人建議對象更改爲以下:

$scope.subjectBin = [{ 
    faculty: "Faculty of Engineering", 
    subjects: [{ 
     subjectName: "ECE", 
     courses: [{<course-object>},{<course-object>}] 
     }, 
     ... 
    ] 
}, { 
    faculty: "Faculty of Science", 
    subjects: [{ 
     subjectBin: "CMPUT", 
     courses: [{<course-object>},...] 
     }, 
     ... 
    ] 
}] 

有人告訴我,這個佈局是更好,因爲:「它不使用對象的鍵盤佈局和它遵循的模式」。

我同意這樣做比較好,但一般情況下需要對對象佈局進行一些說明。

什麼是最佳實踐用於鋪設嵌套對象?使用固定鍵名的基於數組的對象是否可取?

回答

1

第二個例子好多了。

在第一個示例中,您有一個包含不同字符串鍵(不是硬編碼)的對象列表。這裏的問題是,那些作爲字符串的鍵需要被轉義以去除標籤,逗號或其他有問題的無效鍵字符串。

第二個例子好多了,因爲你有一個固定硬編碼字符串鍵的對象數組。當你定義你的密鑰時,你總是會知道該對象具有哪些屬性,以及每個屬性具有哪些內容。

你應該總是寫的對象是這樣的:

test = { 
    property1 : {}, 
    property2 : [], 
    property3 : value 
} 

其中property1,property2和property3是硬編碼由你,代表其具體內容。