我经常看到这样的数据结构:
var settings = {
languages: [
{
language: 'English',
translation: 'English',
langCode: 'en',
flagCode: 'us'
},
{
...
}
]
};
或者这个:
var settings = {
languages: [
{
'en' : {
language: 'English',
translation: 'English',
flagCode: 'us'
}
},
{
...
}
]
};
这可以深入很多层次(在一个对象中通常有其他数组包含更多对象)......
如果我们不知道它在数组中的位置,那么当数组必须循环查找某个对象时,添加数组会带来另一层复杂性。但即使知道它的位置,使用它仍然比使用纯粹嵌套的对象更复杂,使用点符号可以很容易地引用所有内容。就像在这种情况下:
var settings = {
languages: {
'en' : {
language: 'English',
translation: 'English',
flagCode: 'us'
},
'de' : {
...
}
}
};
那么什么时候在对象中使用数组,何时不使用数组?
答案 0 :(得分:2)
我的简单回答
当您需要{...}
对的集合时使用对象(key:value
)
当您需要一组对象时使用数组([...]
)
其他差异
数组是有序的,对象不是
数组会自动使用数字编制索引,对象要求您指定索引
数组具有.length
属性,对象不具有</ p>
答案 1 :(得分:0)
这样做可能有多种原因。其中一个是, 当你需要特定顺序的对象时,数组在这里很有帮助。即在你的第一个例子中
var settings = {
languages:
{
language: 'English',
translation: 'English',
langCode: 'en',
flagCode: 'us'
},
{
...
}
};
内部对象可能会改变它的位置,当它在一个数组中时,它只会驻留在它的索引处。
答案 2 :(得分:0)
如果不是数组,您希望数据结构如何保存事物列表?
假设您有一个描述Person
的对象,您如何抓住这些人Children
?
var kid1 =
{
FirstName: "Abc",
LastName: "Def",
Children: null
};
var kid2 =
{
FirstName: "Abc",
LastName: "Def",
Children: null
};
var dad =
{
FirstName: "Abc",
LastName: "Def",
Children: [kid1,kid2]
};
Children must be an array since a person can have more than one child.