JavaScript 对象中使用 {} 和 Map的默认排序问题

let map = {}
map['彩妆墙'] = 1
map['咨询桌'] = 2
map['礼品桌'] = 3
console.log(map)
// {彩妆墙: 1, 咨询桌: 2, 礼品桌: 3}

展开后发现顺序被默认改变

咨询桌: 2
彩妆墙: 1
礼品桌: 3

通过使用:Object.keys(map)
得到如下结果:

console.log(Object.keys(map))
// ['彩妆墙', '咨询桌', '礼品桌']

咋一看没有问题但是我们再看看他的值

但是通过使用:Object.values(map)
得到结果:

console.log(Object.values(map))
[1, 2, 3] 

看到没,顺序被默认排序了,其实不管是key还是value只要是数字就会被默认的进行排序

解决方案一

使用字符串即可,将数字改成字符串

解决方案二

使用 new Map() 来解决

let map = new Map()
map.set(2, '2')
map.set(3, '3')
map.set(1, '1')
console.log(map)
// Map(3) {2 => '2', 3 => '3', 1 => '1'}

data.values()
//  {'2', '3', '1'}

data.keys()
//  {2, 3, 1}

以上就是解决默认排序问题的相关解决方案

你可能感兴趣的:(JavaScript 对象中使用 {} 和 Map的默认排序问题)