Javascript 展平对象并将多个对象推送到阵列

Javascript 展平对象并将多个对象推送到阵列,javascript,Javascript,我正在尝试展平阵列中包含多个对象的阵列。它不断将其扁平化为一个阵列。我希望它在数组中有多个对象,但也希望所有对象都被展平,除了键和值之外的所有对象都被移除 这是名为“livedata”的当前数组 这就是我试图实现的输出 [ { "earningsFileId": 1234, "paymentType": "Session", "detailStatus": "Processing" }, { "earningsFileI

我正在尝试展平阵列中包含多个对象的阵列。它不断将其扁平化为一个阵列。我希望它在数组中有多个对象,但也希望所有对象都被展平,除了键和值之外的所有对象都被移除

这是名为“livedata”的当前数组

这就是我试图实现的输出

[
   {
       "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']
     })
   });