如何在JavaScript中更改对象键值对的位置

如何在JavaScript中更改对象键值对的位置,javascript,object,ecmascript-6,Javascript,Object,Ecmascript 6,我见过类似的问题,但用不同的语言,我正在努力创建一个JavaScript等价物 我正在接收一个对象,并通过一个函数来更改一个(或多个)属性的位置。比如说, 以最初的目的 { individual: [ { dob: '2017-01-01', isAuthorized: true, }, ], business: [ { taxId: '123', }, ], product: { code: '123

我见过类似的问题,但用不同的语言,我正在努力创建一个JavaScript等价物

我正在接收一个对象,并通过一个函数来更改一个(或多个)属性的位置。比如说,

以最初的目的

{
  individual: [
    {
      dob: '2017-01-01',
      isAuthorized: true,
    },
  ],
  business: [
    {
     taxId: '123',
    },
  ],
  product: {
    code: '123',
  },
}
我想将
isAuthorized
的位置更改为
business
数组中的第一个对象,而不是
individual

像这样

{
  individual: [
    {
      dob: '2017-01-01',
    },
  ],
  business: [
    {
     taxId: '123',
     isAuthorized: true,
    },
  ],
  product: {
    code: '123',
  },
}
到目前为止,我正在尝试创建一个对象,该对象将包含要将其更改为的键名和位置,例如

{
  isAuthorized: obj.business[0]
}
然后在原始对象以及具有位置值的对象上循环,然后设置该键值对的位置


基本上,在这个函数中,我希望看到,如果原始对象包含某个值(在本例中,
已授权)
,它将获取该键值对并将其移动到所需的位置。

使用loadsh可以轻松实现所需的功能,下面是一个关于如何基于已定义的结构映射进行重构的工作片段。扩展此示例以匹配所需内容

该示例是执行深度克隆,如果您可以修改原始对象,请跳过该步骤以避免开销

//输入数据
常数数据={
个人:[
{
dob:‘2017-01-01’,
我被授权:是的,
},
],
业务:[
{
的士:123,
},
],
产品:{
代码:'123',
},
};
//结构变化图
常量键映射={
“个人[0].isAuthorized':“业务[0].isAuthorized”
};
函数parseData(数据、键映射){
const newData=u.cloneDeep(数据);
for(让[source,dest]的Object.entries(keyMap)){
_.set(newData,dest,u.get(newData,source));
_.unset(新数据、来源);
}
返回新数据;
}
log(parseData(data,keyMap))
“移动”实际上是两个步骤;将属性添加/复制到新对象,并从旧对象中删除旧属性。这两个操作之前都已回答过;和。也许你可以尝试在你的尝试中结合这两者,并展示你的尝试?