如何在JavaScript中保持hashmap的顺序

How to preserve order of hashmap in JavaScript?

本文关键字:hashmap 顺序 JavaScript      更新时间:2023-09-26

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

基本上,我希望能够说

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

当我遍历映射时,它们总是在[{a:1}, {b:2}…]]。

我相信JavaScript Map object可以帮助你解决这个问题:

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)标准。欢呼。

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

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]);
} 

保持顺序数组的一致性可能比较棘手,因为在修改原始映射时总是需要更新顺序数组。