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