javascript - 创建一个保留顺序的 javascript 哈希表?

标签 javascript

我环顾四周,但似乎没有什么正是我要找的。我正在尝试弄清楚您是否可以拥有一个哈希表,该哈希表也保留顺序但同时让您可以通过键名(而不是索引号)访问值。

假设我有一个哈希表:

var productsSelected = {
  cpu: "Core i7 2.4GHz",
  memory: "8GB",
  videoCard: "nVidia 6500-GTS",
  display: "27-inch LCD",
  extraBattery: "",
  antivirus: "",
  mouse: "Logitech 232",
  extendedWarranty: ""
}

我想使用 Handlebars 遍历此对象并显示在订单确认页面中选择的产品列表。

订单确认列表中显示的产品需要有一定的顺序。例如,我不希望防病毒软件显示在列表顶部,然后是 CPU。我希望它是 CPU-内存-videoCard- 等等...

我考虑过在键名中添加数字:

var productsSelected = {
  a100-cpu: "Core i7 2.4GHz",
  a110-memory: "8GB",
  a120-videoCard: "nVidia 6500-GTS",
  .
  .

但这是一种非常愚蠢的做法。

还有

var productsSelectedArray = [
  {cpu: "Core i7 2.4GHz"},
  {memory: "8GB"},
  {videoCard: "nVidia 6500-GTS"},
  {display: "27-inch LCD"},
  {extraBattery: ""},
  {antivirus: ""},
  {mouse: "Logitech 232"},
  {extendedWarranty: ""}
]

但是循环遍历很愚蠢 - 也许吧?例如,我将如何遍历它但只显示键名?

理想情况下,哈希表可以保留顺序,适用于所有浏览器(我收集到不同的浏览器对哈希表顺序的处理方式不同),并且可以通过它们的键(也可能通过它们的索引)访问值,比如

productsSelected.memory 返回“8GB”

productsSelected[1].value 也返回“8GB”

productsSelected[1].key 可能返回“内存”

或者类似的东西。

最佳答案

保持顺序的映射也称为链接 HashMap 。 这是一个显示如何在 javascript 中构建一个的链接:

http://dailyjs.com/2012/09/24/linkedhashmap/

如果您正在寻找内置于 javascript 的解决方案,我认为它不存在。每个浏览器都有自己的对象遍历实现。

关于javascript - 创建一个保留顺序的 javascript 哈希表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608024/

相关文章:

javascript - 在数组 VueJS 中显示对象

javascript - 将额外属性附加到 JSON 对象

javascript - 一个或多个图像的CSS3背景图像颜色过渡效果

javascript - 如何将2个值传递给传单中的json样式

javascript - 如何制作列表菜单 "collapsible"?

javascript - 使用 React 在 Material-UI DatePicker 中仅启用年份

javascript - 使用 AJAX 提交动态表单?

javascript - 如何创建在滚动时显示自己的重叠图像

javascript - 使用 jquery 根据元素类型设置内容

javascript - 仅在单击后初始化 mousemove 事件