如何在JavaScript中保留hashmap的顺序?

时间:2014-07-30 16:13:20

标签: java javascript collections

Java有LinkedHashMap但似乎在JavaScript中似乎没有类似的解决方案。

基本上,我希望能够说

var map = {};
map['a'] = 1;
map['b'] = 2;

然后,当我遍历地图时,它们始终处于[{a:1},{b:2} ...]顺序。

2 个答案:

答案 0 :(得分:1)

我相信JavaScript Map 对象可以帮助您解决此问题:

let myObject = new Map();
myObject.set('z', 33);
myObject.set('1', 100);
myObject.set('b', 3);

for (let [key, value] of myObject) {
  console.log(key, value);
}
// z 33
// 1 100
// b 3

此外,请考虑到这是ES6(ES2015)标准。 干杯。

答案 1 :(得分:0)

您可以使用第二个数组来保留键的顺序。

var order = [];

//add something to map
map['a'] = 1;
order.push('a');

map['b'] = 2;
order.push('b');

//iterate in order
for (var i=0; i< order.length;++i) {
  alert(map[order[i]);
} 

保留订单数组的一致性可能很棘手,因为在修改原始地图时总是需要更新订单数组。