如何在javascript Map中保留序列?

emi*_*lly 2 javascript arrays sorting

我有myData地图如下

 var myData =  new Object();

 myData[10427] = "Description 10427";
 myData[10504] = "Description 10504";
 myData[10419] = "Description 10419";
Run Code Online (Sandbox Code Playgroud)

但现在当我迭代myData时,我在chrome中没有得到相同的sequnce,IE在Firefox中工作正常.它按密钥的升序迭代

for (var key in myData) {
  alert("key is"+key);
  }
Run Code Online (Sandbox Code Playgroud)

我在警报中按升序获得输出 10419,10427,10504

我如何确保以与插入地图中的数据相同的顺序迭代?

小智 11

ES6 Maps保留了插入顺序.

set方法用于设置键值对

var myData = new Map();
myData.set(10427, "Description 10427");
myData.set(10504, "Description 10504");
myData.set(10419, "Description 10419");
Run Code Online (Sandbox Code Playgroud)

使用打印地图键和值

myData.forEach((value,key) => console.log(key, value));
Run Code Online (Sandbox Code Playgroud)

这将按插入顺序打印键和值

  • “Map 对象保存键值对并记住键的**原始插入顺序**。” https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map (7认同)
  • `Console.log` 它打印了插入顺序,但在 HTML 中迭代时,它不维护插入顺序。 (3认同)

Que*_*tin 7

对象在JS中是无序的.如果订单很重要,请使用数组.

var myData = [];
myData.push({ "number": 10427, description: "Description 10427" });
Run Code Online (Sandbox Code Playgroud)

  • 我没有对它们进行排序。它们在 chrome 和 ie 中自动获取,但在 firefox 中运行良好 (2认同)
  • 如果你想按顺序插入它们,那么**按照这个答案将它们存储在一个数组中***和*不对数组进行排序. (2认同)