Javascript 保持对象顺序

Javascript 保持对象顺序,javascript,node.js,Javascript,Node.js,我有一个data.js文件,其中包含如下对象: var somedata={ “”:“测试”, “51”:“f”, “123”:“test1”, “67”:“test2”, “你好”:“ghr”, ... } module.exports=somedata; 不幸的是,这个对象被重新排序,并且顺序对于应用程序来说非常重要。在这一点上,有人建议使用地图 因此,它成为: var somedata=新映射(Object.entries)({ “”:“测试”, “51”:“f”, “123”:“tes

我有一个
data.js
文件,其中包含如下对象:

var somedata={
“”:“测试”,
“51”:“f”,
“123”:“test1”,
“67”:“test2”,
“你好”:“ghr”,
...
}
module.exports=somedata;
不幸的是,这个对象被重新排序,并且顺序对于应用程序来说非常重要。在这一点上,有人建议使用地图

因此,它成为:

var somedata=新映射(Object.entries)({
“”:“测试”,
“51”:“f”,
“123”:“test1”,
“67”:“test2”,
“你好”:“ghr”,
...
}))
module.exports=somedata;
啊,好吧,那也没用(或者我就是没有地图)。因此,目前我构建了一个解决方案,在这个解决方案中,我实际使用regex读取文件,并将其放入map对象中以保持对象顺序。不幸的是,随着
data.js
变得越来越大,这种方法非常耗时。在这一点上,我觉得我看待事物的方式是错误的


我的问题:有没有办法以某种方式保持对象顺序?或者至少比解析整个文件更快的解决方法?

除了在插入时使用数组或其他保持顺序的数据结构来保持键的顺序之外,没有其他方法

对象的键首先按值(正32位数字作为字符串)等索引排序,然后按插入顺序按其他字符串排序,然后按符号排序


一个快速的解决方法是将数字前面的破折号作为键,并用它访问对象。

您可以使用地图,但如果您的输入是对象,则不能使用地图。您可以改为使用成对数组,并用它们构造一个映射:

const输入=[
[42,“爱丽丝”],
[30,“鲍勃”],
[14,“卡罗尔”],
[39,“大卫”],
[41,“Edel”],
[2,“弗雷德”],
]
常量映射=新映射(输入);
for(map.entries()的常量[key,value]){
console.log(键、值)

}
对象不能保证键的顺序。JS唯一能保证的是,对键的迭代是一致的,但这并不意味着每个实例的顺序都相同。贴图保持插入顺序,因此最多只能在添加到贴图之前进行排序。但听起来您可能也不想这样做,只想从一个有序的数据结构开始,这样您就不必为了获得所需的顺序而跳转。