如何在JavaScript中展平对象(带或不带lodash)?

如何在JavaScript中展平对象(带或不带lodash)?,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,我有一个像 farmer:{ name: "First Name", bank: { id: 7 } certifications: [ { certificateNumber: { id : 7 }, certificateNumber: { id : 8 } } ] } 我尝试过使用lodash的set和unset方法,但这经常会导致未定义的值。我想从上述对象中完全删除id键 这就是我想要的结果

我有一个像

farmer:{
  name: "First Name",
  bank: {
    id: 7
  }
  certifications: [
   {
    certificateNumber: {
     id : 7
    },
    certificateNumber: {
     id : 8
    }  
   }
  ]
}
我尝试过使用lodash的set和unset方法,但这经常会导致未定义的值。我想从上述对象中完全删除id键

这就是我想要的结果

farmer:{
  name: "First Name",
  bank: 7
  certifications: [
   {
    certificateNumber: 7,
    certificateNumber: 8 
   }
  ]
}
可以使用lodash递归地迭代结构,如果对象具有
id
属性,并且其大小(属性数)为1,则使用
id
值替换该对象

注意:
certifications
数组格式不正确,已更改为以下格式
[{certificateNumber:{id:7}},{certificateNumber:{id:8}]

const fn=obj=>{
设val=value
if(u.has(value,'id')&&&&.size(value)==1)val=u.get(value,'id'))
如果(u.isObject(value))val=fn(value)
累加器[键]=val
})
const farmer={“name”:“First name”,“bank”:{“id”:7},“certifications”:[{“certificateNumber”:{“id”:7},{“certificateNumber”:{“id”:8}]}
const result=fn(农民)
console.log(结果)

一个对象不能有重复的键(因此您的输入数据类型和预期结果无效)@NickParsons它实际上并不无效。只是后面的键会覆盖前面的键<代码>{a:1,a:2,a:3}产生
{a:3}
。为什么证书是一个带有单个对象的数组?@max啊,你说得对,我想我应该说它“没有多大意义”而不是“无效”:)@J.Stoll这是我通过查询从数据库中获取它的方式,当我进行变异时,我需要删除该对象并直接发送id