2014-11-16 266 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是硬编码由你,代表其具体内容。