Search code examples
javascriptarraysjavascript-objectsobject-literal

Best Method to Merge Javascript Arrays into an Object Literal


I'm looking for a native JavaScript method to merge 2 arrays into a literal object.

Turn this:

var x = ["blue", "yellow", "red", "green", "brown", "grey", "gray", "orange"]; 
var y = ["james", "john", "robert", "michael", "william", "david", "richard", "wayne"];

Into this:

{
"obj" : {
    "blue" : "james",
    "yellow" : "john",
    "red" :  "robert", 
    "green" : "michael", 
    "brown" : "william", 
    "gray" : "david", 
    "grey" : "richard", 
    "orange" : "wayne"
  }
}

Solution

  • var x = ["blue", "yellow", "red", "green", "brown", "grey", "gray", "orange"]; 
    var y = ["james", "john", "robert", "michael", "william", "david", "richard", "wayne"];
    
    function merge2array(a, b) {
        var obj = {};
        var l = a.length;
        var i;
    
        for (i = 0; i < l; i++) {
            obj[a[i]] = b[i];
        }
    
        return obj;
    }
    
    var obj = merge2array(x, y);
    console.log(obj);
    

    This will return this object:

    {
        "blue" : "james",
        "yellow" : "john",
        "red" :  "robert", 
        "green" : "michael", 
        "brown" : "william", 
        "gray" : "david", 
        "grey" : "richard", 
        "orange" : "wayne"
    }
    

    Then you can build your desired object:

    var r = { obj: obj };
    console.log(r);