问题描述
const data = [
{
'UTMEH5': {
descr: {
ordertype: 'limit',pair: 'XBT/USD',price: '5000.00000',},status: 'open',vol: '0.00200000',{
'3F2TYE': {
descr: {
ordertype: 'limit',price: '10000.00000'
},]
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","price": "10000.00000","status": "open"
}
]
]
但我想要这个:
[
{
"orderid": "UTMEH5","status": "open"
},{
"orderid": "3F2TYE","status": "open"
}
]
对于重复的建议,我似乎可以使用 .flat()
,但这似乎是获得我想要的东西的迂回方式。有没有更好更直接的方法?
解决方法
对于这种情况,您可以使用 flatMap()
代替 map()
。
const data = [{
'UTMEH5': {
descr: {
ordertype: 'limit',pair: 'XBT/USD',price: '5000.00000',},status: 'open',vol: '0.00200000',{
'3F2TYE': {
descr: {
ordertype: 'limit',price: '10000.00000'
},]
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)