如何将键和零浮点值附加到对象数组中的对象Javascript

如何将键和零浮点值附加到对象数组中的对象Javascript,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个对象的输入数组和一个所需的/输出数组 对象的输入数组 var input = [{ "Grade": "AU27", "Thickness10Qty": "7.00", "Thickness5Qty": "19.20", "TotalQty": "26.20" }, { "Grade": "FE500D", "Thickness10Qty": "143.00", "Thickness12Qty": "69.00", "Thickness8Qty": "30.00", "TotalQty"

我有一个对象的输入数组和一个所需的/输出数组

对象的输入数组

var input = [{
"Grade": "AU27",
"Thickness10Qty": "7.00",
"Thickness5Qty": "19.20",
"TotalQty": "26.20"
},
{
"Grade": "FE500D",
"Thickness10Qty": "143.00",
"Thickness12Qty": "69.00",
"Thickness8Qty": "30.00",
"TotalQty": "242.00"
}, 
{
"Grade": "GE500D",
"Thickness18Qty": "90.00",
"Thickness22Qty": "40.00",
"TotalQty": "130.00"
}, 
{
"Grade": "HE500D",
"Thickness26Qty": "70.00",
"TotalQty": "70.00"
}
];
var output = [{
 "Grade": "AU27",
 "Thickness10Qty": "7.00",
 "Thickness5Qty": "19.20",
 "Thickness12Qty": "0.00",
 "Thickness8Qty": "0.00",
 "Thickness18Qty": "0.00",
 "Thickness22Qty": "0.00",
 "Thickness26Qty": "0.00",
 "TotalQty": "26.20"
 },
 {
  "Grade": "FE500D",
  "Thickness10Qty": "143.00",
  "Thickness12Qty": "69.00",
  "Thickness8Qty": "30.00",
  "Thickness5Qty": "0.00",
  "Thickness18Qty": "0.00",
  "Thickness22Qty": "0.00",
  "Thickness26Qty": "0.00",
  "TotalQty": "242.00"
 }, 
 {
  "Grade": "GE500D",
  "Thickness18Qty": "90.00",
  "Thickness22Qty": "40.00",
  "Thickness10Qty": "0.00",
  "Thickness12Qty": "0.00",
  "Thickness8Qty": "0.00",
  "Thickness5Qty": "0.00",
  "Thickness26Qty": "0.00",
  "TotalQty": "130.00"
  }, 
  {
   "Grade": "HE500D",
   "Thickness26Qty": "70.00",
   "Thickness18Qty": "0.00",
   "Thickness22Qty": "0.00",
   "Thickness10Qty": "0.00",
   "Thickness12Qty": "0.00",
   "Thickness8Qty": "0.00",
   "Thickness5Qty": "0.00",
    "TotalQty": "70.00"
   }
  ];
我将其作为所需的对象数组

var input = [{
"Grade": "AU27",
"Thickness10Qty": "7.00",
"Thickness5Qty": "19.20",
"TotalQty": "26.20"
},
{
"Grade": "FE500D",
"Thickness10Qty": "143.00",
"Thickness12Qty": "69.00",
"Thickness8Qty": "30.00",
"TotalQty": "242.00"
}, 
{
"Grade": "GE500D",
"Thickness18Qty": "90.00",
"Thickness22Qty": "40.00",
"TotalQty": "130.00"
}, 
{
"Grade": "HE500D",
"Thickness26Qty": "70.00",
"TotalQty": "70.00"
}
];
var output = [{
 "Grade": "AU27",
 "Thickness10Qty": "7.00",
 "Thickness5Qty": "19.20",
 "Thickness12Qty": "0.00",
 "Thickness8Qty": "0.00",
 "Thickness18Qty": "0.00",
 "Thickness22Qty": "0.00",
 "Thickness26Qty": "0.00",
 "TotalQty": "26.20"
 },
 {
  "Grade": "FE500D",
  "Thickness10Qty": "143.00",
  "Thickness12Qty": "69.00",
  "Thickness8Qty": "30.00",
  "Thickness5Qty": "0.00",
  "Thickness18Qty": "0.00",
  "Thickness22Qty": "0.00",
  "Thickness26Qty": "0.00",
  "TotalQty": "242.00"
 }, 
 {
  "Grade": "GE500D",
  "Thickness18Qty": "90.00",
  "Thickness22Qty": "40.00",
  "Thickness10Qty": "0.00",
  "Thickness12Qty": "0.00",
  "Thickness8Qty": "0.00",
  "Thickness5Qty": "0.00",
  "Thickness26Qty": "0.00",
  "TotalQty": "130.00"
  }, 
  {
   "Grade": "HE500D",
   "Thickness26Qty": "70.00",
   "Thickness18Qty": "0.00",
   "Thickness22Qty": "0.00",
   "Thickness10Qty": "0.00",
   "Thickness12Qty": "0.00",
   "Thickness8Qty": "0.00",
   "Thickness5Qty": "0.00",
    "TotalQty": "70.00"
   }
  ];
我要做的是,假设在object输入数组的第一个对象中,只有Thickness10Qty和Thickness5Qty,所以我必须输入其他键作为0。我希望每个对象中的关键点数量相等。类似地,对于对象输入数组中的最后一个对象,仅存在Thickness26Qty。因此,我们将其他键插入为0,以便在每个对象中具有相同数量的键

如何使用相同数量的关键点实现所需的对象数组


密钥不能硬编码,它来自一个服务,该服务可能返回Thickness34Qty/Thickness46Qty而不是Thickness22Qty或Thickness38Qty而不是Thickness18Qty,创建一个对象中所有密钥的数组,然后遍历对象数组,并添加任何缺少的密钥,值为
0.00

var输入=[{
“等级”:“AU27”,
“厚度10数量”:“7.00”,
“厚度5数量”:“19.20”,
“总数量”:“26.20”
},
{
“等级”:“FE500D”,
“厚度10数量”:“143.00”,
“厚度12数量”:“69.00”,
“厚度8数量”:“30.00”,
“总数量”:“242.00”
},
{
“等级”:“GE500D”,
“厚度18数量”:“90.00”,
“厚度22数量”:“40.00”,
“总数量”:“130.00”
},
{
“等级”:“HE500D”,
“厚度26数量”:“70.00”,
“总数量”:“70.00”
}
];
变量键=[“等级”、“总数量”、“厚度5数量”、“厚度8数量”、“厚度10数量”、“厚度12数量”、“厚度18数量”、“厚度22数量”、“厚度26数量”];
变量输出=输入.映射(obj=>{
key.forEach(key=>obj[key]?key:obj[key]=“0.00”);
返回obj;
});
控制台日志(输出)

.as console wrapper{max height:100%!important;top:auto;}
创建一个对象中所有键的数组,然后遍历对象数组,并添加任何缺少的键,值为
0.00

var输入=[{
“等级”:“AU27”,
“厚度10数量”:“7.00”,
“厚度5数量”:“19.20”,
“总数量”:“26.20”
},
{
“等级”:“FE500D”,
“厚度10数量”:“143.00”,
“厚度12数量”:“69.00”,
“厚度8数量”:“30.00”,
“总数量”:“242.00”
},
{
“等级”:“GE500D”,
“厚度18数量”:“90.00”,
“厚度22数量”:“40.00”,
“总数量”:“130.00”
},
{
“等级”:“HE500D”,
“厚度26数量”:“70.00”,
“总数量”:“70.00”
}
];
变量键=[“等级”、“总数量”、“厚度5数量”、“厚度8数量”、“厚度10数量”、“厚度12数量”、“厚度18数量”、“厚度22数量”、“厚度26数量”];
变量输出=输入.映射(obj=>{
key.forEach(key=>obj[key]?key:obj[key]=“0.00”);
返回obj;
});
控制台日志(输出)

.as console wrapper{max height:100%!important;top:auto;}
您可以创建一个模板对象,该模板对象的所有键都设置为
0.00
,定义了所需的字段,然后您可以使用
对象.assign()
内部
映射()
将其与现有对象合并

var输入=[{“等级”:“AU27”,“厚度10QTY”:“7.00”,“厚度5QTY”:“19.20”,“总数量”:“26.20”},{“等级”:“FE500D”,“厚度10QTY”:“143.00”,“厚度12QTY”:“69.00”,“厚度8QTY”:“30.00”,“总数量”:“242.00”},{“等级”:“GE500D”,“厚度18QTY”:“90.00”,“厚度22QTY”:“40.00”,“总数量”:“130.00”},{“等级”:“HE500D”,“厚度26数量”:“70.00”,“总数量”:“70.00”}];
//制作所有密钥的模板
让template=input.reduce((obj,item)=>(Object.keys(item.forEach(k=>obj[k]='0.00'),obj),{})
//适用于以下项目:
让newArray=input.map(item=>Object.assign({},template,item))

console.log(newArray)
您可以创建一个模板对象,该对象的所有键都设置为
0.00
,定义所需的字段,然后您可以使用
object.assign()
inside
map()
将其与现有对象合并

var输入=[{“等级”:“AU27”,“厚度10QTY”:“7.00”,“厚度5QTY”:“19.20”,“总数量”:“26.20”},{“等级”:“FE500D”,“厚度10QTY”:“143.00”,“厚度12QTY”:“69.00”,“厚度8QTY”:“30.00”,“总数量”:“242.00”},{“等级”:“GE500D”,“厚度18QTY”:“90.00”,“厚度22QTY”:“40.00”,“总数量”:“130.00”},{“等级”:“HE500D”厚度26数量“:“70.00”,“总数量“:“70.00”}];
//制作所有密钥的模板
让template=input.reduce((obj,item)=>(Object.keys(item.forEach(k=>obj[k]='0.00'),obj),{})
//适用于以下项目:
让newArray=input.map(item=>Object.assign({},template,item))

console.log(newArray)
这可能不会设置任何性能记录,但应该演示发生的步骤以及如何对其进行轻微优化。需要注意的是,对对象进行操作会使输入数组中的对象发生变化,因此没有输入/输出数组,因为这需要克隆对象和进行更多的工作

let array=getData()
规范化数据(数组)
console.log('输出:',数组)
函数规格化数据(数组){
让存储的_键={}
array.forEach((obj、ndx、arr)=>{
让新的_键=[]
//创建在其他对象中找到的关键点
Object.key(存储的_key).forEach(key=>{
如果(!(输入obj))
obj[键]=“0.00”
})
//检测新密钥
Object.keys(obj.forEach)(key=>{
如果(!存储的密钥[密钥]){
存储的_键[键]=真//轨迹键
new_keys.push(key)//跟踪要应用于以前对象的新关键点
}
})
//向以前的对象添加任何新关键点
if(新的_键长度)
对于(变量i=0,n=ndx;i上一个索引键[索引键]=“0.00”)
}
})
}
函数getData(){
返回[{
“等级”:“AU27”,
“厚度10数量”:“7.00”,
“厚度5数量”:“19.20”,
“总数量”