Reduce array of object to totals by property object The Next CEO of Stack OverflowDetecting an undefined object propertyWhat is the most efficient way to deep clone an object in JavaScript?How can I merge properties of two JavaScript objects dynamically?How do I remove a property from a JavaScript object?How do I check if an array includes an object in JavaScript?Sort array of objects by string property valueHow to check if an object is an array?How do I remove a particular element from an array in JavaScript?Iterate through object propertiesFor-each over an array in JavaScript?

How to edit “Name” property in GCI output?

Does Germany produce more waste than the US?

Is wanting to ask what to write an indication that you need to change your story?

Flying from Cape Town to England and return to another province

Math-accent symbol over parentheses enclosing accented symbol (amsmath)

Why is my new battery behaving weirdly?

I want to delete every two lines after 3rd lines in file contain very large number of lines :

I believe this to be a fraud - hired, then asked to cash check and send cash as Bitcoin

Do I need to write [sic] when a number is less than 10 but isn't written out?

What happened in Rome, when the western empire "fell"?

Would be okay to drive on this tire?

A Man With a Stainless Steel Endoskeleton (like The Terminator) Fighting Cloaked Aliens Only He Can See

How many extra stops do monopods offer for tele photographs?

The exact meaning of 'Mom made me a sandwich'

Grabbing quick drinks

RigExpert AA-35 - Interpreting The Information

How to check if all elements of 1 list are in the *same quantity* and in any order, in the list2?

How to get from Geneva Airport to Metabief, Doubs, France by public transport?

Is there a difference between "Fahrstuhl" and "Aufzug"

Running a General Election and the European Elections together

When you upcast Blindness/Deafness, do all targets suffer the same effect?

Why is quantifier elimination desirable for a given theory?

How to count occurrences of text in a file?

Why the difference in type-inference over the as-pattern in two similar function definitions?



Reduce array of object to totals by property object



The Next CEO of Stack OverflowDetecting an undefined object propertyWhat is the most efficient way to deep clone an object in JavaScript?How can I merge properties of two JavaScript objects dynamically?How do I remove a property from a JavaScript object?How do I check if an array includes an object in JavaScript?Sort array of objects by string property valueHow to check if an object is an array?How do I remove a particular element from an array in JavaScript?Iterate through object propertiesFor-each over an array in JavaScript?










7















I'm looking for a smart ES6 way to reduce array of objects into totals-by-property-object.



for a sample data:



const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];


following code:



const res = src.reduce((totals,item) => Object.keys(item).forEach(weekday => totals[weekday] += item[weekday]),)


throws an error:




Uncaught TypeError: Cannot read property 'mon' of undefined




even if reduce is initialized with mon:0, tue:0 ... instead of .



Is there a non-for-loop solution?



p.s. expected output is an object where each property is a sum of array objects by that property, e.g. mon:6, tue:3, wed:5, thu:5, fri:8, sat:0, sun:10 in my case










share|improve this question









New contributor




user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    7















    I'm looking for a smart ES6 way to reduce array of objects into totals-by-property-object.



    for a sample data:



    const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];


    following code:



    const res = src.reduce((totals,item) => Object.keys(item).forEach(weekday => totals[weekday] += item[weekday]),)


    throws an error:




    Uncaught TypeError: Cannot read property 'mon' of undefined




    even if reduce is initialized with mon:0, tue:0 ... instead of .



    Is there a non-for-loop solution?



    p.s. expected output is an object where each property is a sum of array objects by that property, e.g. mon:6, tue:3, wed:5, thu:5, fri:8, sat:0, sun:10 in my case










    share|improve this question









    New contributor




    user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      7












      7








      7


      0






      I'm looking for a smart ES6 way to reduce array of objects into totals-by-property-object.



      for a sample data:



      const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];


      following code:



      const res = src.reduce((totals,item) => Object.keys(item).forEach(weekday => totals[weekday] += item[weekday]),)


      throws an error:




      Uncaught TypeError: Cannot read property 'mon' of undefined




      even if reduce is initialized with mon:0, tue:0 ... instead of .



      Is there a non-for-loop solution?



      p.s. expected output is an object where each property is a sum of array objects by that property, e.g. mon:6, tue:3, wed:5, thu:5, fri:8, sat:0, sun:10 in my case










      share|improve this question









      New contributor




      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      I'm looking for a smart ES6 way to reduce array of objects into totals-by-property-object.



      for a sample data:



      const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];


      following code:



      const res = src.reduce((totals,item) => Object.keys(item).forEach(weekday => totals[weekday] += item[weekday]),)


      throws an error:




      Uncaught TypeError: Cannot read property 'mon' of undefined




      even if reduce is initialized with mon:0, tue:0 ... instead of .



      Is there a non-for-loop solution?



      p.s. expected output is an object where each property is a sum of array objects by that property, e.g. mon:6, tue:3, wed:5, thu:5, fri:8, sat:0, sun:10 in my case







      javascript ecmascript-6






      share|improve this question









      New contributor




      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited yesterday







      user11154868













      New contributor




      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked yesterday









      user11154868user11154868

      384




      384




      New contributor




      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      user11154868 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          2 Answers
          2






          active

          oldest

          votes


















          5














          You need to return totals after you modify it:






          const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

          const res = src.reduce((totals, item) => 0) + item[weekday])

          return totals;
          , );

          console.log(res);








          share|improve this answer


















          • 3





            I can't believe it was that close. Thanks a lot.

            – user11154868
            yesterday


















          4














          You need to return totals as accumulator for reduce.



          If you have allways all days in the objects and you don't mind to mutate the first object, you could work without a start object.






          const
          src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
          res = src.reduce((totals, item) =>
          (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

          console.log(res);








          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',
            autoActivateHeartbeat: false,
            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
            );



            );






            user11154868 is a new contributor. Be nice, and check out our Code of Conduct.









            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55418223%2freduce-array-of-object-to-totals-by-property-object%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            5














            You need to return totals after you modify it:






            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);








            share|improve this answer


















            • 3





              I can't believe it was that close. Thanks a lot.

              – user11154868
              yesterday















            5














            You need to return totals after you modify it:






            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);








            share|improve this answer


















            • 3





              I can't believe it was that close. Thanks a lot.

              – user11154868
              yesterday













            5












            5








            5







            You need to return totals after you modify it:






            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);








            share|improve this answer













            You need to return totals after you modify it:






            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);








            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);





            const src = [mon:1,tue:0,wed:3,thu:5,fri:7,sat:0,sun:4, mon:5,tue:3,wed:2,thu:0,fri:1,sat:0,sun:6];

            const res = src.reduce((totals, item) => 0) + item[weekday])

            return totals;
            , );

            console.log(res);






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered yesterday









            Ori DroriOri Drori

            81.4k138997




            81.4k138997







            • 3





              I can't believe it was that close. Thanks a lot.

              – user11154868
              yesterday












            • 3





              I can't believe it was that close. Thanks a lot.

              – user11154868
              yesterday







            3




            3





            I can't believe it was that close. Thanks a lot.

            – user11154868
            yesterday





            I can't believe it was that close. Thanks a lot.

            – user11154868
            yesterday













            4














            You need to return totals as accumulator for reduce.



            If you have allways all days in the objects and you don't mind to mutate the first object, you could work without a start object.






            const
            src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
            res = src.reduce((totals, item) =>
            (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

            console.log(res);








            share|improve this answer



























              4














              You need to return totals as accumulator for reduce.



              If you have allways all days in the objects and you don't mind to mutate the first object, you could work without a start object.






              const
              src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
              res = src.reduce((totals, item) =>
              (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

              console.log(res);








              share|improve this answer

























                4












                4








                4







                You need to return totals as accumulator for reduce.



                If you have allways all days in the objects and you don't mind to mutate the first object, you could work without a start object.






                const
                src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
                res = src.reduce((totals, item) =>
                (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

                console.log(res);








                share|improve this answer













                You need to return totals as accumulator for reduce.



                If you have allways all days in the objects and you don't mind to mutate the first object, you could work without a start object.






                const
                src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
                res = src.reduce((totals, item) =>
                (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

                console.log(res);








                const
                src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
                res = src.reduce((totals, item) =>
                (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

                console.log(res);





                const
                src = [ mon: 1, tue: 0, wed: 3, thu: 5, fri: 7, sat: 0, sun: 4 , mon: 5, tue: 3, wed: 2, thu: 0, fri: 1, sat: 0, sun: 6 ],
                res = src.reduce((totals, item) =>
                (Object.keys(item).forEach(d => totals[d] += item[d]), totals));

                console.log(res);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered yesterday









                Nina ScholzNina Scholz

                195k15107178




                195k15107178




















                    user11154868 is a new contributor. Be nice, and check out our Code of Conduct.









                    draft saved

                    draft discarded


















                    user11154868 is a new contributor. Be nice, and check out our Code of Conduct.












                    user11154868 is a new contributor. Be nice, and check out our Code of Conduct.











                    user11154868 is a new contributor. Be nice, and check out our Code of Conduct.














                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55418223%2freduce-array-of-object-to-totals-by-property-object%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

                    Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

                    Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070