Iterating through array of JavaScript objects and outputting it









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>









share|improve this question























  • You'll need to group the articleName by time, and then display each articleName for the same time.
    – ChrisR
    Nov 8 at 14:29














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>









share|improve this question























  • You'll need to group the articleName by time, and then display each articleName for the same time.
    – ChrisR
    Nov 8 at 14:29












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>









share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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
















  • 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












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>).






share|improve this answer




















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













     

    draft saved


    draft discarded


















    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






























    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>).






    share|improve this answer
























      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>).






      share|improve this answer






















        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>).






        share|improve this answer












        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>).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 8 at 14:38









        Peter Squicciarini

        262




        262



























             

            draft saved


            draft discarded















































             


            draft saved


            draft discarded














            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














































































            Popular posts from this blog

            𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

            Edmonton

            Crossroads (UK TV series)