 <p>If you can use a library like underscore or lodash (or recreate the methods used here) it can be done like so: </p> <pre><code>var attributes = ['fruit', 'color']; var fruits = ['apple', 'orange', 'banana']; var colors = ['red', 'orange', 'yellow']; //Combine arrays in to list of pairs //(this would be expanded with each new array of attribute values) //ORDER IS IMPORTANT var zipped = _.zip(fruits, colors); //Map the zipped list, returning an object based on the keys. //Remember the order of the arrays in the zip operation //must match the order of the attributes in the attributes list var result = _.map(zipped, function(item, index) { return _.object(attributes, item); }); console.log(result); </code></pre>