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

创建保留顺序的javascript哈希表?,javascript,Javascript,我环顾四周,但似乎什么都不是我要找的。我试图弄清楚是否可以有一个哈希表,该哈希表也可以保留顺序,但同时可以通过键名(而不是索引号)访问值 假设我有一个哈希表: var productsSelected = { cpu: "Core i7 2.4GHz", memory: "8GB", videoCard: "nVidia 6500-GTS", display: "27-inch LCD", extraBattery: "", antivirus: "", mouse:

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

假设我有一个哈希表:

var productsSelected = {
  cpu: "Core i7 2.4GHz",
  memory: "8GB",
  videoCard: "nVidia 6500-GTS",
  display: "27-inch LCD",
  extraBattery: "",
  antivirus: "",
  mouse: "Logitech 232",
  extendedWarranty: ""
}
我想使用手柄在这个对象中循环,并在订单确认页面中显示所选产品的列表

订单确认列表中显示的产品需要按特定顺序排列。我不希望杀毒软件显示在列表的顶部,例如CPU。我希望它是CPU内存视频卡-等

我考虑过在密钥名称中添加数字:

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: ""}
]
但这是愚蠢的循环-也许?例如,如何循环遍历它,但只显示键名

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

已选择产品。内存
返回“8GB”

已选择产品[1]。值
还返回“8GB”

已选择产品[1]。键
可能返回“内存”


或者类似的东西。

保持顺序的映射也称为链接哈希映射。 下面的链接显示了如何在javascript中构造一个:


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

为什么不能只指定数组中的键,然后只使用数组按顺序访问属性

var keys = ['cpu', 'memory', 'videoCard'];

for (var i = 0, l = keys.length; i < l; i++) {
  console.log(productsSelected[keys[i]]);
};
var key=['cpu','memory','videoCard'];
对于(变量i=0,l=keys.length;i
如果需要,甚至可以将键作为对象的属性

for (var i = 0, l = productsSelected.keys.length; i < l; i++) {
  console.log(productsSelected[productsSelected.keys[i]]);
};
for(var i=0,l=productsSelected.keys.length;i

在仔细考虑之后-使用下划线是否也能起作用

所有散列都按一定顺序排列:

productsSelectedArray = [
  {cpu: "Core i7 2.4GHz"},
  {memory: "8GB"},
  {videoCard: "nVidia 6500-GTS"},
  {display: "27-inch LCD"},
  {extraBattery: ""},
  {antivirus: ""},
  {mouse: "Logitech 232"},
  {extendedWarranty: ""}
];
为了按顺序显示所有键,我们可以使用下划线:

for (var i = 0, l = productsSelectedArray.length; i < l; i++) {
  console.log( _.keys(productsSelectedArray[i]) );
};
for(变量i=0,l=productsSelectedArray.length;i
然后为了按顺序显示所有值,我们也可以使用下划线

for (var i = 0, l = productsSelectedArray.length; i < l; i++) {
  console.log( _.values(productsSelectedArray[i]) );
};
for(变量i=0,l=productsSelectedArray.length;i
太棒了-我认为这个脚本很有前途!这是一个非常酷和聪明的方法。理想情况下,我不想显式定义一个单独的键数组,事实上,现在我想起来了,显式定义键也是显式定义顺序的好方法。