'Transforme JSON into string array correlated
I'm having a problem into convert json into a string array
I need transform a json into a string array because I will do a INSERT into our database dynamically, because this need work for any json and I don't know how is the JSON that I will receive.
This is my response
[
{
consumer: 'consumer a',
orders: [{
orderNumber: 1,
details: {
dates: { deadline: '2022-02-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' },
{ id: 2, status: 'Awaiting Payment', date: '2022-01-02' },
{ id: 3, status: 'Awaiting Fulfillment', date: '2022-01-02' }]
}
},
{
orderNumber: 2,
details: {
dates: { deadline: '2022-03-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
}
}]
},
{
consumer: 'consumer b',
orders: [{
orderNumber: 6,
details: {
dates: { deadline: '2022-02-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
}
},
{
orderNumber: 7,
details: {
dates: { deadline: '2022-03-17' },
status: [{ id: 1, status: 'Pending', date: '2022-03-01' },
{ id: 2, status: 'Awaiting Payment', date: '2022-04-02' },
{ id: 3, status: 'Awaiting Fulfillment', date: '2022-05-02' }]
}
}]
}
]
I need this result
['consumer a', '1', '1'],
['consumer a', '1', '2'],
['consumer a', '1', '3'],
['consumer a', '2', '1'],
['consumer b', '6', '1'],
['consumer b', '7', '1'],
['consumer b', '7', '2'],
['consumer b', '7', '3']
I created a map for reach this objective
like this
['consumer', 'consumer.orders.orderNumber', 'consumer.orders.detaisl.status.id']
But can't do that, someone have any idea?
Solution 1:[1]
You can use a reduce function then traverse each order and again for each status, then return the accumulator
const arr = [
{
consumer: 'consumer a',
orders: [{
orderNumber: 1,
details: {
dates: { deadline: '2022-02-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' },
{ id: 2, status: 'Awaiting Payment', date: '2022-01-02' },
{ id: 3, status: 'Awaiting Fulfillment', date: '2022-01-02' }]
}
},
{
orderNumber: 2,
details: {
dates: { deadline: '2022-03-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
}
}]
},
{
consumer: 'consumer b',
orders: [{
orderNumber: 6,
details: {
dates: { deadline: '2022-02-17' },
status: [{ id: 1, status: 'Pending', date: '2022-01-01' }]
}
},
{
orderNumber: 7,
details: {
dates: { deadline: '2022-03-17' },
status: [{ id: 1, status: 'Pending', date: '2022-03-01' },
{ id: 2, status: 'Awaiting Payment', date: '2022-04-02' },
{ id: 3, status: 'Awaiting Fulfillment', date: '2022-05-02' }]
}
}]
}
]
const result = arr.reduce((acc,val)=>{
val.orders.forEach(o=>o.details.status.forEach(s=>acc.push([val.consumer, o.orderNumber.toString(), s.id.toString()])))
return acc
},[])
console.log(result)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | knicholas |
