Iterating through array of JavaScript objects and outputting it

Multi tool use
up vote
0
down vote
favorite
I have this array of js objects. How can I output this in jsx based on time key? Like in the example below.
[
articleName: "Burger",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:45:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:45:30 PM"
]
Based on time:
from 2:43:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:44:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:45:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
javascript reactjs react-native
add a comment |
up vote
0
down vote
favorite
I have this array of js objects. How can I output this in jsx based on time key? Like in the example below.
[
articleName: "Burger",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:45:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:45:30 PM"
]
Based on time:
from 2:43:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:44:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:45:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
javascript reactjs react-native
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have this array of js objects. How can I output this in jsx based on time key? Like in the example below.
[
articleName: "Burger",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:45:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:45:30 PM"
]
Based on time:
from 2:43:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:44:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:45:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
javascript reactjs react-native
I have this array of js objects. How can I output this in jsx based on time key? Like in the example below.
[
articleName: "Burger",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:43:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:44:30 PM"
,
articleName: "Burger",
time: "11/8/2018, 2:45:30 PM"
,
articleName: "Cheese",
time: "11/8/2018, 2:45:30 PM"
]
Based on time:
from 2:43:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:44:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
from 2:45:30 PM
<View>
<Text>Burger</Text>
<Text>Cheese</Text>
</View>
javascript reactjs react-native
javascript reactjs react-native
edited 2 days ago
Cœur
16.8k9101139
16.8k9101139
asked Nov 8 at 14:17
FatBoyGebajzla
297
297
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29
add a comment |
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
One solution would be to reduce the your array into groups based on time, and then map those into JSX. Assuming your array is called data
:
const dataByTime = data.reduce((acc, el) =>
if (Array.isArray(acc[el.time]))
acc[el.time].push(el.articleName)
else
acc[el.time] = [el.articleName]
return acc
, )
dataByTime
is now of the format [date time]: ['burger', 'cheese'], ...
So you could map that to JSX like this:
Object.keys(dataByTime).map((time) => (
<div>
time
<View>
dataByTime[time].map(food => (
<Text>food</Text>
))
</View>
</div>
))
You could skip the map in the JSX and handle it in the original reducer too (instead of pushing el.articleName
you could push <Text>el.articleName</Text>
).
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
One solution would be to reduce the your array into groups based on time, and then map those into JSX. Assuming your array is called data
:
const dataByTime = data.reduce((acc, el) =>
if (Array.isArray(acc[el.time]))
acc[el.time].push(el.articleName)
else
acc[el.time] = [el.articleName]
return acc
, )
dataByTime
is now of the format [date time]: ['burger', 'cheese'], ...
So you could map that to JSX like this:
Object.keys(dataByTime).map((time) => (
<div>
time
<View>
dataByTime[time].map(food => (
<Text>food</Text>
))
</View>
</div>
))
You could skip the map in the JSX and handle it in the original reducer too (instead of pushing el.articleName
you could push <Text>el.articleName</Text>
).
add a comment |
up vote
1
down vote
One solution would be to reduce the your array into groups based on time, and then map those into JSX. Assuming your array is called data
:
const dataByTime = data.reduce((acc, el) =>
if (Array.isArray(acc[el.time]))
acc[el.time].push(el.articleName)
else
acc[el.time] = [el.articleName]
return acc
, )
dataByTime
is now of the format [date time]: ['burger', 'cheese'], ...
So you could map that to JSX like this:
Object.keys(dataByTime).map((time) => (
<div>
time
<View>
dataByTime[time].map(food => (
<Text>food</Text>
))
</View>
</div>
))
You could skip the map in the JSX and handle it in the original reducer too (instead of pushing el.articleName
you could push <Text>el.articleName</Text>
).
add a comment |
up vote
1
down vote
up vote
1
down vote
One solution would be to reduce the your array into groups based on time, and then map those into JSX. Assuming your array is called data
:
const dataByTime = data.reduce((acc, el) =>
if (Array.isArray(acc[el.time]))
acc[el.time].push(el.articleName)
else
acc[el.time] = [el.articleName]
return acc
, )
dataByTime
is now of the format [date time]: ['burger', 'cheese'], ...
So you could map that to JSX like this:
Object.keys(dataByTime).map((time) => (
<div>
time
<View>
dataByTime[time].map(food => (
<Text>food</Text>
))
</View>
</div>
))
You could skip the map in the JSX and handle it in the original reducer too (instead of pushing el.articleName
you could push <Text>el.articleName</Text>
).
One solution would be to reduce the your array into groups based on time, and then map those into JSX. Assuming your array is called data
:
const dataByTime = data.reduce((acc, el) =>
if (Array.isArray(acc[el.time]))
acc[el.time].push(el.articleName)
else
acc[el.time] = [el.articleName]
return acc
, )
dataByTime
is now of the format [date time]: ['burger', 'cheese'], ...
So you could map that to JSX like this:
Object.keys(dataByTime).map((time) => (
<div>
time
<View>
dataByTime[time].map(food => (
<Text>food</Text>
))
</View>
</div>
))
You could skip the map in the JSX and handle it in the original reducer too (instead of pushing el.articleName
you could push <Text>el.articleName</Text>
).
answered Nov 8 at 14:38
Peter Squicciarini
262
262
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53209598%2fiterating-through-array-of-javascript-objects-and-outputting-it%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
3wFe9fdBxPIf eAn1 GHkT XovfAp,rReZ8 knT1,V7Y28CZtcKsDpNlozbCx3 ZBnFMhCiopGkN8Lcem,09Jwu,WvZMJ6qeNPXp
You'll need to group the articleName by time, and then display each articleName for the same time.
– ChrisR
Nov 8 at 14:29