我从某处了解到,如果我有一个无序集合(例如要购买的元素列表),我应该在 Javascript 中使用对象文字。如果我有一个有序列表(例如,按优先顺序购买的元素列表),我应该使用数组。
数组:
priorityList = [
"computer"
"mouse"
"pen"
]
我的问题是如何使用对象文字来完成此操作? 我应该使用对象作为无序列表,还是也应该使用数组,这是否正确?
更新答案之一:
选择1:
var things = [
{"name":"computer","price":300},
{"name":"mouse","price":20},
];
选择2:
var things = {
"computer": {
"price": 300
},
"mouse": {
"price": 20
}
}
我应该选择哪一个?
将 2 更新为答案之一:
var ulist = {
"bar": {
"price": 12
},
"baz": {
"price": 12
},
"bar": {
"price": 12
}
}
for(item in ulist) {
console.log(item); // bar baz
}
var olist = [
{"name": "bar"},
{"name": "baz"},
{"name": "bar"}
]
console.log(olist[0].name); // bar
console.log(olist[1].name); // baz
console.log(olist[2].name); // bar
在这里我们看到,所有项目都应该是唯一的无序列表对于选择 2 来说是很好的,因为即使我错误地提供了多个唯一项目,它也只会得到其中一个,并且它不关心订单。
但在选择 1 中,即使我有相同的项目,它们也会被视为单独的项目,并且全部打印出来。而且它似乎也是有序的,因为如果不使用 [0]、[1]、[2] 等迭代就无法获取项目。
这是否证明当您想要拥有独特的元素时选择 2 更好?
最佳答案
更多的是关于数据结构的复杂性。如果您有一个原始事物列表(例如字符串),请使用数组(无论是否有序)。如果您有更复杂的数据结构,需要键/值对,请使用对象文字。
如果您要存储元数据,例如:
var things = [
{"name":"computer","price":300},
{"name":"mouse","price":20},
];
数组是不够的,因为每个对象中都存储了很多信息......但我将它们保留为数组的子对象。因此,如果您要存储的信息不仅仅是项目本身,请使用对象文字。
如果您有类似关联数组的结构,也可以使用对象文字:
var person = {
age: 23,
walk: function(){},
name: "john"
};
关于javascript - Javascript 中无序集合的对象和有序集合的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175074/