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

标签 javascript

我从某处了解到,如果我有一个无序集合(例如要购买的元素列表),我应该在 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/

相关文章:

javascript - Three.js 中的相邻面

javascript - 未在服务器控件中评估服务器标记

javascript - 移动端js内存泄漏

javascript - .slice() 不是一个函数,尽管在字符串上调用

javascript - 使用 href 中的 onclick 更改选择列表的值

javascript - 创建 2 个日期之间的日期数组

java - html 页面上的验证码图像链接

javascript - 在 React 中下载 JSON

javascript - 关于 John Resig 的简单 Javascript 继承的问题

javascript - 在慢速网络上,前一个 Ajax 请求会被后续请求取消