如何在javascript中从另一个对象创建自定义对象

如何在javascript中从另一个对象创建自定义对象,javascript,Javascript,我试图从另一个对象创建自定义对象,但我想使其成为动态对象 我有一个目标如下 { docType: "Produce", PRODUCEID: "PRFAINAPCH0005", PRODUCE: "Sweetcorn", PRODUCEQUANTITES: [{ name: "Madhuri", qty: 4000 }], FARMLOC

我试图从另一个对象创建自定义对象,但我想使其成为动态对象

我有一个目标如下

{
    docType: "Produce",
    PRODUCEID: "PRFAINAPCH0005",
    PRODUCE: "Sweetcorn",
    PRODUCEQUANTITES: [{
        name: "Madhuri",
        qty: 4000
    }],
    FARMLOCATION: "Plot 56",
    PLANTINGDATE: "2020-10-01T04:00:00.000Z",
    GAPINFO: {},
    FARMERID: "FAINAPCH0001",
    STATUS: "Approved",
    BASE_UNIT: "kg",
    SELECTED_UNIT: {
        NAME: "kg"
    },
} 
我想做另一个像下面这样的物体

{
  BusinessData: {
    PRODUCEQUANTITES: [{
      name: "Madhuri",
      qty: 4000
    }],
    FARMLOCATION: "Plot 56",
    GAPINFO: {},
    PLANTINGDATE: "2020-10-01T04:00:00.000Z",
    BASE_UNIT: "kg",
    SELECTED_UNIT: {
      NAME: "kg"
    },
    FARMERID: "FAINAPCH0001"
  },
  PRID: "PRFAINAPCH0005",
  docType: "Produce",
  PRODUCE: "Sweetcorn",
  STATUS: "Approved"
}
在该对象中,除了“PRODUCEID”、“product”、“docType”和“STATUS”之外,所有属性都将进入“BusinessData”属性中,该属性是主对象中的对象

我尝试使用下面的代码,这不是一个很好的方法,因为它使代码成为静态的,我想使它成为动态的,除了“PRODUCEID”、“product”、“docType”和“STATUS”所有属性都在“BusinessData”属性内。 提前谢谢

var myparam = {
    "BusinessData": {}
};
myparam.PRID = param.PRODUCEID
myparam.docType = param.docType
myparam.PRODUCE = param.PRODUCE
myparam.STATUS = param.STATUS
myparam.BusinessData.PRODUCEQUANTITES = param.PRODUCEQUANTITES
myparam.BusinessData.FARMLOCATION = param.FARMLOCATION
myparam.BusinessData.GAPINFO = param.GAPINFO
myparam.BusinessData.PLANTINGDATE = param.PLANTINGDATE
myparam.BusinessData.BASE_UNIT = param.BASE_UNIT
myparam.BusinessData.SELECTED_UNIT = param.SELECTED_UNIT
myparam.BusinessData.FARMERID = param.FARMERID

console.log("myparam", myparam);

创建包含特殊属性的映射对象,然后循环键:

函数转换对象(obj){
常量映射={
PRODUCEID:“PRID”,
docType:“docType”,
生产:“生产”,
状态:“状态”
};
const ret={BusinessData:{}};
用于(obj中的常量键){
if(输入映射){
ret[mappings[key]=obj[key];
}否则{
ret.BusinessData[key]=obj[key];
}
}
返回ret;
}

这利用了一个循环。

创建一个包含特殊属性的映射对象,然后循环键:

函数转换对象(obj){
常量映射={
PRODUCEID:“PRID”,
docType:“docType”,
生产:“生产”,
状态:“状态”
};
const ret={BusinessData:{}};
用于(obj中的常量键){
if(输入映射){
ret[mappings[key]=obj[key];
}否则{
ret.BusinessData[key]=obj[key];
}
}
返回ret;
}

这利用了一个循环。

您可以对对象进行分解和重构。rest语法将处理其他项目

const对象={
docType:“生产”,
PRODUCEID:“PRFAINAPCH0005”,
生产:“甜玉米”,
产品数量:[{
姓名:“Madhuri”,
数量:4000
}],
农场位置:“56号地块”,
种植日期:“2020-10-01T04:00:00.000Z”,
加平福:{},
法梅里德:“FAINAPCH0001”,
状态:“已批准”,
基本单位:“千克”,
所选单位:{
名称:“kg”
},
}
常数变化=({
生产商,
docType,
生产,,
地位
…BusinessData/`…`收集所有其他信息
}) => ({
PRID:PRODUCEID,//将PRODUCEID重命名为PRID
docType,
生产,,
地位
业务数据
})

log(更改(对象))
您可以分解和重构对象。rest语法将处理其他项目

const对象={
docType:“生产”,
PRODUCEID:“PRFAINAPCH0005”,
生产:“甜玉米”,
产品数量:[{
姓名:“Madhuri”,
数量:4000
}],
农场位置:“56号地块”,
种植日期:“2020-10-01T04:00:00.000Z”,
加平福:{},
法梅里德:“FAINAPCH0001”,
状态:“已批准”,
基本单位:“千克”,
所选单位:{
名称:“kg”
},
}
常数变化=({
生产商,
docType,
生产,,
地位
…BusinessData/`…`收集所有其他信息
}) => ({
PRID:PRODUCEID,//将PRODUCEID重命名为PRID
docType,
生产,,
地位
业务数据
})
console.log(更改(对象))