Issue
I have this:
products = [
{
'id': 1
'name: 'test'
},
{
'id': 2
'name: 'test'
},
{
'id': 3
'name: 'test'
}
... etc, etc
]
I need to restructure it to this:
products = [
row1: [
{
'id': 1
'name: 'test'
},
{
'id': 2
'name: 'test'
},
{
'id': 3
'name: 'test'
},
{
'id': 4
'name: 'test'
}
]
row2: [
{
'id': 5
'name: 'test'
},
{
'id': 6
'name: 'test'
},
{
'id': 7
'name: 'test'
},
{
'id': 8
'name: 'test'
}
]
row3: [.. etc, etc
]
the hard part is that the number of objects in each group is set using a variable (in this example the variable would be 4).
How can I achieve this using Typescript/Javascript? Its driving me mad!
Thanks
Solution
Use Array.reduce()
You can run a .reduce() method on your products array, like so:
var products = [
{ 'id': 1, name: 'test' },
{ 'id': 2, name: 'test' },
{ 'id': 3, name: 'test' },
{ 'id': 4, name: 'test' },
{ 'id': 5, name: 'test' },
{ 'id': 6, name: 'test' }
]
var numberOfObjects = 4 // <-- decides number of objects in each group
var groupedProducts = products.reduce((acc, elem, index) => {
var rowNum = Math.floor(index/numberOfObjects) + 1
acc[`row${rowNum}`] = acc[`row${rowNum}`] || []
acc[`row${rowNum}`].push(elem)
return acc
}, {})
console.log(groupedProducts)
Answered By - UtkarshPramodGupta
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.