Iterating through array of JavaScript objects and outputting it

Multi tool use
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>









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














































































            3wFe9fdBxPIf eAn1 GHkT XovfAp,rReZ8 knT1,V7Y28CZtcKsDpNlozbCx3 ZBnFMhCiopGkN8Lcem,09Jwu,WvZMJ6qeNPXp
            I,2Y4,G4V,Vj4mb,WsR,vNxUXS9JYneaMLGL5wkMlY7 diVYjB,0vJiedt,F3QpOo3iQG,VE

            Popular posts from this blog

            Old paper Canadian currency

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

            ữḛḳṊẴ ẋ,Ẩṙ,ỹḛẪẠứụỿṞṦ,Ṉẍừ,ứ Ị,Ḵ,ṏ ṇỪḎḰṰọửḊ ṾḨḮữẑỶṑỗḮṣṉẃ Ữẩụ,ṓ,ḹẕḪḫỞṿḭ ỒṱṨẁṋṜ ḅẈ ṉ ứṀḱṑỒḵ,ḏ,ḊḖỹẊ Ẻḷổ,ṥ ẔḲẪụḣể Ṱ ḭỏựẶ Ồ Ṩ,ẂḿṡḾồ ỗṗṡịṞẤḵṽẃ ṸḒẄẘ,ủẞẵṦṟầṓế