Javascript 展平对象并将多个对象推送到阵列
我正在尝试展平阵列中包含多个对象的阵列。它不断将其扁平化为一个阵列。我希望它在数组中有多个对象,但也希望所有对象都被展平,除了键和值之外的所有对象都被移除 这是名为“livedata”的当前数组 这就是我试图实现的输出Javascript 展平对象并将多个对象推送到阵列,javascript,Javascript,我正在尝试展平阵列中包含多个对象的阵列。它不断将其扁平化为一个阵列。我希望它在数组中有多个对象,但也希望所有对象都被展平,除了键和值之外的所有对象都被移除 这是名为“livedata”的当前数组 这就是我试图实现的输出 [ { "earningsFileId": 1234, "paymentType": "Session", "detailStatus": "Processing" }, { "earningsFileI
[
{
"earningsFileId": 1234,
"paymentType": "Session",
"detailStatus": "Processing"
},
{
"earningsFileId": 1234,
"paymentType": "Session",
"detailStatus": "Processing"
}
]
data = [];
Object.values(livedata).map((value, keys) => {
Object.keys(value).forEach((key) => {
data[key] = livedata[keys][key]['value']
})
});
您需要从livedata
中的每个对象创建一个新的“展平”对象。您可以使用对象获取每个键值对。条目
和所需对象的数组:
const livedata=[{
“EarningFileId”:{
“价值”:1234
},
“paymentType”:{
“值”:“会话”,
“错误”:[{
“id”:802462,
“消息”:“无效组合”,
“状态”:“正在处理”
}]
},
“详细状态”:{
“值”:“处理”
}
},
{
“EarningFileId”:{
“价值”:5678
},
“paymentType”:{
“值”:“会话”,
“错误”:[{
“id”:802462,
“消息”:“无效组合”,
“状态”:“正在处理”
}]
},
“详细状态”:{
“值”:“处理”
}
}
];
const result=livedata.map(d=>
Object.entries(d).reduce((acc,[k,v])=>{
acc[k]=v.值;
返回acc;
}, {}))
控制台日志(结果)代码>您需要从livedata
中的每个对象创建一个新的“展平”对象。您可以使用对象获取每个键值对。条目
和所需对象的数组:
const livedata=[{
“EarningFileId”:{
“价值”:1234
},
“paymentType”:{
“值”:“会话”,
“错误”:[{
“id”:802462,
“消息”:“无效组合”,
“状态”:“正在处理”
}]
},
“详细状态”:{
“值”:“处理”
}
},
{
“EarningFileId”:{
“价值”:5678
},
“paymentType”:{
“值”:“会话”,
“错误”:[{
“id”:802462,
“消息”:“无效组合”,
“状态”:“正在处理”
}]
},
“详细状态”:{
“值”:“处理”
}
}
];
const result=livedata.map(d=>
Object.entries(d).reduce((acc,[k,v])=>{
acc[k]=v.值;
返回acc;
}, {}))
控制台日志(结果)代码>谢谢,你知道我为什么会出错吗。属性“value”在类型“{}@Suzed”上不存在。它必须告诉您为什么在没有实际数据的情况下运行此操作,因为它适用于您在问题中提供的数据。您的livedata
数组是否有其他具有空对象的条目,或者某些内部对象是否没有属性值
?是的,它们确实有。有些值未定义或为空。@Suzed在这种情况下,您可以在reduce函数中添加如下检查,而不是直接指定内部对象的值(acc[k]=v.value
):if('value'在v中):acc[k]=v.value代码>谢谢,你知道我为什么会出错吗。属性“value”在类型“{}@Suzed”上不存在。它必须告诉您为什么在没有实际数据的情况下运行此操作,因为它适用于您在问题中提供的数据。您的livedata
数组是否有其他具有空对象的条目,或者某些内部对象是否没有属性值
?是的,它们确实有。有些值未定义或为空。@Suzed在这种情况下,您可以在reduce函数中添加如下检查,而不是直接指定内部对象的值(acc[k]=v.value
):if('value'在v中):acc[k]=v.value代码>
[
{
"earningsFileId": 1234,
"paymentType": "Session",
"detailStatus": "Processing"
},
{
"earningsFileId": 1234,
"paymentType": "Session",
"detailStatus": "Processing"
}
]
data = [];
Object.values(livedata).map((value, keys) => {
Object.keys(value).forEach((key) => {
data[key] = livedata[keys][key]['value']
})
});