为什么未排序的数组在 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
我有一个未排序的数组:
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