无序集合的对象和Javascript中有序集合的数组?

ajs*_*sie 2 javascript

我从某个地方学到如果我有一个无序的集合(例如,要购买的东西的列表),我应该在Javascript中使用对象文字.如果我有一个有序列表(例如,按优先顺序购买的东西列表)我应该使用一个数组.

阵:

priorityList = [
   "computer"
   "mouse"
   "pen"
]
Run Code Online (Sandbox Code Playgroud)

我的问题是如何用对象字面量来完成?我是否应该将对象用于无序列表,或者我是否应该使用数组?

更新到答案之一:

选择1:

var things = [
    {"name":"computer","price":300},
    {"name":"mouse","price":20},
];
Run Code Online (Sandbox Code Playgroud)

选择2:

var things = {
    "computer": {
          "price": 300
    },
    "mouse": {
          "price": 20
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该选择哪一个?

更新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
Run Code Online (Sandbox Code Playgroud)

在这里,我们看到所有项目应该是唯一的无序列表对于选择2原因是好的,即使我错误地提供了多个唯一项目,它只获得其中一个,并且它不关心订单.

但是在选择1中,即使我有相同的物品,它们也被视为单独的物品,并且都打印出来.并且似乎它是有序的,因为没有办法获得一个项目而不用[0],[1],[2]等迭代它.

这是否证明当你想拥有独特的物品时,选择2会更好?

med*_*iev 5

它更多的是数据结构的复杂性.如果你有一个原始的东西列表,如字符串,使用一个数组(无论它是否有序).如果您有更复杂的数据结构,需要键/值对,请使用对象文字.

如果要存储元数据,例如:

var things = [
    {"name":"computer","price":300},
    {"name":"mouse","price":20},
];
Run Code Online (Sandbox Code Playgroud)

一个数组是不够的,因为我有很多信息存储在每个对象中...但我把它们作为数组的子节点.因此,如果您要存储的信息不仅仅是项目本身,请使用对象文字.

如果您具有类似关联数组的结构,请同时使用对象文字:

var person = {
     age: 23,
     walk: function(){},
     name: "john"
};
Run Code Online (Sandbox Code Playgroud)