我的印象是,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));
在这种情况下,按创建顺序获取密钥的正确方法是什么?
编辑:我不想对订单进行排序,寻找创建订单
答案 0 :(得分:2)
是的,键的顺序确实可以区分数组索引(basically非负整数)和其他索引。要将键作为已排序的整数,请使用
Object.keys(object1).map(Number).sort((a, b) => a-b)
答案 1 :(得分:0)
如果您不想更改键的类型并将其保留为字符串,则可以这样做。
Object.getOwnPropertyNames(object1).sort()