如何解决对象遍历时,整数 key 会优先按从小到大顺序排序

const o = {
  3: '3',
  1: '1',
  '1.6': '1.6',
  1.2: '1.2',
  b: 'b',
  'a': 'a',
  2: '2',
};

for (const key in o) {
  if (o.hasOwnProperty(key)) {
    console.log(key, o[key]);
  }
}

输出结果:
1 1
2 2
3 3
1.6 1.6
1.2 1.2
b b
a a

阅读 4.1k
3 个回答

对象属性本身不具备有序性,不同厂家的实现遍历对象的顺序可能不一样。使用时请转成数组后排序使用。

Object.keys(o).sort((a, b) => <your logic>).forEach(it => console.log(it, o[it]))

最新标准遍历对象时是不管你定义时key的顺序的,是有一套固定的标准
要实现你的需求请用数组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题