为什么未排序的数组在 JavaScript 中的结果 hash-table 中被排序?

Why unsorted array is getting sorted in resulting hash-table in JavaScript?

我有一个未排序的数组:

const x = [10, 5, 1, 8, 3, 6, 5, 4, 7, 2, 5, 9, 0];

我想把这个数组转成hash-table其中key是数组的元素,values是这个数组中元素出现的次数。所以我接下来要做:

const map = {};

x.forEach(item => {
  if (!map.hasOwnProperty(item)) {
    map[item] = 0;
  }
  map[item] += 1;
})

我不明白的是为什么我未排序的数组在结果哈希中排序-table?

{
  '0': 1,
  '1': 1,
  '2': 1,
  '3': 1,
  '4': 1,
  '5': 3,
  '6': 1,
  '7': 1,
  '8': 1,
  '9': 1,
  '10': 1
}

你的代码中使用的数据结构是Object,当使用Objects.keys或使用迭代时,它总是按升序重新运行。如果要维护插入顺序。尝试map或set,详情请参考下方

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set