我的对象包含这样的数据
const testData = {
"_11": {
"data": {
"firstName": "firstName",
"lastName": "lastName"
}
},
"_12": {
"data": {
"firstName": "firstName",
"lastName": "lastName"
}
},
"_00": {
"data": {
"firstName": "firstName",
"lastName": "lastName"
}
},
"_01": {
"data": {
"firstName": "firstName",
"lastName": "lastName"
}
},
"final": {
"data": {
"firstName": "firstName",
"lastName": "lastName"
}
}
}
我通过在解决问题的所有对象键之前添加特殊字符来稍微修改我的数据
sorted = Object.keys(testData).sort().reduce((acc, key) => ({
...acc, [key]: testData[key]
}), {})
答案 0 :(得分:7)
您不能。 JavaScript对象键的已定义迭代顺序如下:
"11"
之类的字符串,但 not "01"
等),则... 如您所见,无论插入顺序如何,数字键始终始终以迭代顺序显示,并且始终以其数字顺序显示。
在您的示例中,无论您做什么,"11"
和"12"
总是最终。
通常,建议不要依赖对象的顺序(本质上是通过键访问的无序词典)。如果顺序很重要,则应该使用数组。或者,您可以使用Map
。
答案 1 :(得分:-2)
尝试这样的事情:
sorted = Object.keys(testData).sort((a,b) => {
if (a < b) return -1;
if (a > b) return 1;
return 0;
});
console.log(sorted)