JavaScript在给定属性数组的情况下对对象属性重新排序

JavaScript在给定属性数组的情况下对对象属性重新排序,javascript,arrays,object,Javascript,Arrays,Object,我有一个javascript对象,如: { a: 3, b: 10, c: 2, d: 7, } 我有一个数组,其中包含属性名称的字符串表示形式: [ "c", "b", "a", "d" ] 如何重新排列对象,使属性按与数组中相同的顺序排列,例如: { c: 2, b: 10, a: 3, d: 7, } 尽管ECMAScript-6改进了该功能,但对象属性仍然以无序著称。解决

我有一个javascript对象,如:

{
  a: 3,
  b: 10,
  c: 2,
  d: 7,
}
我有一个数组,其中包含属性名称的字符串表示形式:

[ "c", "b", "a", "d" ]
如何重新排列对象,使属性按与数组中相同的顺序排列,例如:

{
  c: 2,
  b: 10,
  a: 3,
  d: 7,
}

尽管ECMAScript-6改进了该功能,但对象属性仍然以无序著称。解决此问题的一种方法是使用能够记住原始密钥插入顺序的映射

constobj={a:3,b:10,c:2,d:7};
常数arr=[“c”、“b”、“a”、“d”];
const res=新映射(arr.Map(e=>[e,obj[e]]);
for(让[…res]的[键,值]){
console.log(键、值);

}
对象中属性的顺序是任意的。这里的实际目标是什么?您必须构造一个新对象,并按您想要的顺序添加属性。但是,我强烈建议您重新考虑依赖对象属性顺序的编码策略,因为这会使您的代码非常脆弱。您可以对数组进行排序以匹配对象属性顺序吗?为什么不将数组作为有序访问器?这看起来真的像是一个错误。您的实际用例是什么?