Search code examples
javascriptunderscore.jslodash

merge nested array of object with parent object


var data = {
      food:"chicken", 
      list:[
             { name: "wings", qty: "25", price: "4,900", payment:"Cash" },
             { name: "lap", qty: "50", price: "9,900", payment: "Credit" }
           ]
      }

I received this data above from ajax through php laravel model relationship and i would like to use javascript or any library to convert the data in the format below.

The data below is what is desired.

var data = [
    { food:"chicken", name: "wings", qty:"25", price:"4,900", payment:"Cash" },
    { food:"chicken", name: "lap", qty:"50", price:"9,900", payment:"Credit" }        
]   

Solution

  • This code of the getList-function might help you:

    let getList = function(data, arrayKey, arrayName) {
     data[arrayKey].forEach(function(element) {
       element[arrayName] = data[arrayName]
     }); return data[arrayKey];
    };
    

    Here you can see a running example of the function above:

    const data = {
      food: "chicken",
      list: [{
          name: "wings",
          qty: "25",
          price: "4,900",
          payment: "Cash"
        },
        {
          name: "lap",
          qty: "50",
          price: "9,900",
          payment: "Credit"
        }
      ]
    };
    
    let getList = function(data, arrayKey, arrayName) {
     data[arrayKey].forEach(function(element) {
       element[arrayName] = data[arrayName]
     }); return data[arrayKey];
    };
    
    let result = getList(data, "list", "food");
    console.log(result);