JavaScript create object merging array and a Dict












1














I have a reference dict:



  a = [
{ name: 'a'},
{ name: 'b'},
{ name: 'c'}
];


and a second array called (received via a API as a response)



data = [10,20,30]


I want to join the Dict and the array together and make something like:



Output:



[{
'a': 10,
'b': 20,
'c':30
}]


i tried foreach() though 'data' and pass the index to Dict 'a' obtain the key and do a push() for a new Dict but seems like foreach() exiting prematurely.



Any pointers appreciated.










share|improve this question
























  • Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
    – Andreas
    Nov 20 at 18:10


















1














I have a reference dict:



  a = [
{ name: 'a'},
{ name: 'b'},
{ name: 'c'}
];


and a second array called (received via a API as a response)



data = [10,20,30]


I want to join the Dict and the array together and make something like:



Output:



[{
'a': 10,
'b': 20,
'c':30
}]


i tried foreach() though 'data' and pass the index to Dict 'a' obtain the key and do a push() for a new Dict but seems like foreach() exiting prematurely.



Any pointers appreciated.










share|improve this question
























  • Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
    – Andreas
    Nov 20 at 18:10
















1












1








1







I have a reference dict:



  a = [
{ name: 'a'},
{ name: 'b'},
{ name: 'c'}
];


and a second array called (received via a API as a response)



data = [10,20,30]


I want to join the Dict and the array together and make something like:



Output:



[{
'a': 10,
'b': 20,
'c':30
}]


i tried foreach() though 'data' and pass the index to Dict 'a' obtain the key and do a push() for a new Dict but seems like foreach() exiting prematurely.



Any pointers appreciated.










share|improve this question















I have a reference dict:



  a = [
{ name: 'a'},
{ name: 'b'},
{ name: 'c'}
];


and a second array called (received via a API as a response)



data = [10,20,30]


I want to join the Dict and the array together and make something like:



Output:



[{
'a': 10,
'b': 20,
'c':30
}]


i tried foreach() though 'data' and pass the index to Dict 'a' obtain the key and do a push() for a new Dict but seems like foreach() exiting prematurely.



Any pointers appreciated.







javascript






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 at 18:27









Aluan Haddad

12.1k22549




12.1k22549










asked Nov 20 at 18:05









sheeni

14310




14310












  • Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
    – Andreas
    Nov 20 at 18:10




















  • Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
    – Andreas
    Nov 20 at 18:10


















Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
– Andreas
Nov 20 at 18:10






Please add a Minimal, Complete, and Verifiable example which shows the actual problem. If a has at least the same number of elements the described way shouldn't "exit prematurely"
– Andreas
Nov 20 at 18:10














2 Answers
2






active

oldest

votes


















0














Give this a try:






var initial = performance.now();

var a = [
{ name: 'a' },
{ name: 'b' },
{ name: 'c' }
];

var data = [10, 20, 30];
var finalObject = {};
a.forEach((item, index) => finalObject[item.name] = data[index]);
var result = [finalObject];

console.log(result);
var final = performance.now();
console.log(`Time taken to run: ${final - initial}`);








share|improve this answer































    0














    You can reduce a and take advantage of the index in the callback to create your merged object:






    var initial = performance.now();

    var a = [
    {name: 'a'},
    {name: 'b'},
    {name: 'c'}
    ];
    var data = [10, 20, 30];

    var output = [a.reduce((acc, x, i) => {
    acc[x.name] = data[i]
    return acc;
    }, {})];

    console.log(output);
    var final = performance.now();
    console.log(`Time taken to run: ${final-initial}`);








    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
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398959%2fjavascript-create-object-merging-array-and-a-dict%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









      0














      Give this a try:






      var initial = performance.now();

      var a = [
      { name: 'a' },
      { name: 'b' },
      { name: 'c' }
      ];

      var data = [10, 20, 30];
      var finalObject = {};
      a.forEach((item, index) => finalObject[item.name] = data[index]);
      var result = [finalObject];

      console.log(result);
      var final = performance.now();
      console.log(`Time taken to run: ${final - initial}`);








      share|improve this answer




























        0














        Give this a try:






        var initial = performance.now();

        var a = [
        { name: 'a' },
        { name: 'b' },
        { name: 'c' }
        ];

        var data = [10, 20, 30];
        var finalObject = {};
        a.forEach((item, index) => finalObject[item.name] = data[index]);
        var result = [finalObject];

        console.log(result);
        var final = performance.now();
        console.log(`Time taken to run: ${final - initial}`);








        share|improve this answer


























          0












          0








          0






          Give this a try:






          var initial = performance.now();

          var a = [
          { name: 'a' },
          { name: 'b' },
          { name: 'c' }
          ];

          var data = [10, 20, 30];
          var finalObject = {};
          a.forEach((item, index) => finalObject[item.name] = data[index]);
          var result = [finalObject];

          console.log(result);
          var final = performance.now();
          console.log(`Time taken to run: ${final - initial}`);








          share|improve this answer














          Give this a try:






          var initial = performance.now();

          var a = [
          { name: 'a' },
          { name: 'b' },
          { name: 'c' }
          ];

          var data = [10, 20, 30];
          var finalObject = {};
          a.forEach((item, index) => finalObject[item.name] = data[index]);
          var result = [finalObject];

          console.log(result);
          var final = performance.now();
          console.log(`Time taken to run: ${final - initial}`);








          var initial = performance.now();

          var a = [
          { name: 'a' },
          { name: 'b' },
          { name: 'c' }
          ];

          var data = [10, 20, 30];
          var finalObject = {};
          a.forEach((item, index) => finalObject[item.name] = data[index]);
          var result = [finalObject];

          console.log(result);
          var final = performance.now();
          console.log(`Time taken to run: ${final - initial}`);





          var initial = performance.now();

          var a = [
          { name: 'a' },
          { name: 'b' },
          { name: 'c' }
          ];

          var data = [10, 20, 30];
          var finalObject = {};
          a.forEach((item, index) => finalObject[item.name] = data[index]);
          var result = [finalObject];

          console.log(result);
          var final = performance.now();
          console.log(`Time taken to run: ${final - initial}`);






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 20 at 18:26

























          answered Nov 20 at 18:15









          SiddAjmera

          12.9k31137




          12.9k31137

























              0














              You can reduce a and take advantage of the index in the callback to create your merged object:






              var initial = performance.now();

              var a = [
              {name: 'a'},
              {name: 'b'},
              {name: 'c'}
              ];
              var data = [10, 20, 30];

              var output = [a.reduce((acc, x, i) => {
              acc[x.name] = data[i]
              return acc;
              }, {})];

              console.log(output);
              var final = performance.now();
              console.log(`Time taken to run: ${final-initial}`);








              share|improve this answer




























                0














                You can reduce a and take advantage of the index in the callback to create your merged object:






                var initial = performance.now();

                var a = [
                {name: 'a'},
                {name: 'b'},
                {name: 'c'}
                ];
                var data = [10, 20, 30];

                var output = [a.reduce((acc, x, i) => {
                acc[x.name] = data[i]
                return acc;
                }, {})];

                console.log(output);
                var final = performance.now();
                console.log(`Time taken to run: ${final-initial}`);








                share|improve this answer


























                  0












                  0








                  0






                  You can reduce a and take advantage of the index in the callback to create your merged object:






                  var initial = performance.now();

                  var a = [
                  {name: 'a'},
                  {name: 'b'},
                  {name: 'c'}
                  ];
                  var data = [10, 20, 30];

                  var output = [a.reduce((acc, x, i) => {
                  acc[x.name] = data[i]
                  return acc;
                  }, {})];

                  console.log(output);
                  var final = performance.now();
                  console.log(`Time taken to run: ${final-initial}`);








                  share|improve this answer














                  You can reduce a and take advantage of the index in the callback to create your merged object:






                  var initial = performance.now();

                  var a = [
                  {name: 'a'},
                  {name: 'b'},
                  {name: 'c'}
                  ];
                  var data = [10, 20, 30];

                  var output = [a.reduce((acc, x, i) => {
                  acc[x.name] = data[i]
                  return acc;
                  }, {})];

                  console.log(output);
                  var final = performance.now();
                  console.log(`Time taken to run: ${final-initial}`);








                  var initial = performance.now();

                  var a = [
                  {name: 'a'},
                  {name: 'b'},
                  {name: 'c'}
                  ];
                  var data = [10, 20, 30];

                  var output = [a.reduce((acc, x, i) => {
                  acc[x.name] = data[i]
                  return acc;
                  }, {})];

                  console.log(output);
                  var final = performance.now();
                  console.log(`Time taken to run: ${final-initial}`);





                  var initial = performance.now();

                  var a = [
                  {name: 'a'},
                  {name: 'b'},
                  {name: 'c'}
                  ];
                  var data = [10, 20, 30];

                  var output = [a.reduce((acc, x, i) => {
                  acc[x.name] = data[i]
                  return acc;
                  }, {})];

                  console.log(output);
                  var final = performance.now();
                  console.log(`Time taken to run: ${final-initial}`);






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 20 at 18:28









                  SiddAjmera

                  12.9k31137




                  12.9k31137










                  answered Nov 20 at 18:14









                  slider

                  8,0601129




                  8,0601129






























                      draft saved

                      draft discarded




















































                      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.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • 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%2f53398959%2fjavascript-create-object-merging-array-and-a-dict%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

                      Create new schema in PostgreSQL using DBeaver

                      Deepest pit of an array with Javascript: test on Codility

                      Costa Masnaga