javascript对象键顺序为负值

时间:2019-07-09 17:57:10

标签: javascript

我的印象是,ES6引入了新功能,以使用Object.getOwnPropertyNames()Reflect.ownKeys等方法按创建顺序获得对象属性,但是在解决一个我认识到否定键的问题时,该顺序并没有保持。

const object1 = {
  "-1": 'somestring',
  "3": 42,
  "2": false,
  "-3": true
};

console.log(Object.getOwnPropertyNames(object1));
// expected output: Array ["-1", "3, "2", "-3"]
// actual output: ["2", "3", "-1", "-3"]

console.log(Object.keys(object1));

在这种情况下,按创建顺序获取密钥的正确方法是什么?

编辑:我不想对订单进行排序,寻找创建订单

2 个答案:

答案 0 :(得分:2)

是的,键的顺序确实可以区分数组索引(basically非负整数)和其他索引。要将键作为已排序的整数,请使用

Object.keys(object1).map(Number).sort((a, b) => a-b)

答案 1 :(得分:0)

如果您不想更改键的类型并将其保留为字符串,则可以这样做。

Object.getOwnPropertyNames(object1).sort()