const data = [
{
'UTMEH5': {
descr: {
ordertype: 'limit',
pair: 'XBT/USD',
price: '5000.00000',
},
status: 'open',
vol: '0.00200000',
},
},
{
'3F2TYE': {
descr: {
ordertype: 'limit',
pair: 'XBT/USD',
price: '10000.00000'
},
status: 'open',
vol: '0.00200000',
},
},
]
const orders = data.map((order) => {
return Object.entries(order).map(([key, value]) => ({
orderid: key,
pair: value['descr']['pair'],
vol: value['vol'],
price: value['descr']['price'],
ordertype: value['descr']['ordertype'],
status: value['status'],
}))})
console.log(orders)
通过上面的代码,我得到了这个:
[
[
{
"orderid": "UTMEH5",
"pair": "XBT/USD",
"vol": "0.00200000",
"price": "5000.00000",
"ordertype": "limit",
"status": "open"
}
],
[
{
"orderid": "3F2TYE",
"pair": "XBT/USD",
"vol": "0.00200000",
"price": "10000.00000",
"ordertype": "limit",
"status": "open"
}
]
]
但我想要这个:
[
{
"orderid": "UTMEH5",
"pair": "XBT/USD",
"vol": "0.00200000",
"price": "5000.00000",
"ordertype": "limit",
"status": "open"
},
{
"orderid": "3F2TYE",
"pair": "XBT/USD",
"vol": "0.00200000",
"price": "10000.00000",
"ordertype": "limit",
"status": "open"
}
]
对于重复的建议,我似乎可以使用 .flat()
,但这似乎是获得我想要的东西的迂回方式。有没有更好更直接的方法?
答案 0 :(得分:1)
对于这种情况,您可以使用 flatMap()
代替 map()
。
const data = [{
'UTMEH5': {
descr: {
ordertype: 'limit',
pair: 'XBT/USD',
price: '5000.00000',
},
status: 'open',
vol: '0.00200000',
},
},
{
'3F2TYE': {
descr: {
ordertype: 'limit',
pair: 'XBT/USD',
price: '10000.00000'
},
status: 'open',
vol: '0.00200000',
},
},
]
const orders = data.flatMap((order) => Object.entries(order).map(([key, value]) => ({
orderid: key,
vol: value['vol'],
status: value['status'],
...value['descr'], // you can use spread operator here for brevity as well
})))
console.log(orders)