Merge Two Arrays so that the Values Alternate

For those who arrive here by search engine and want a Lodash option:

_.compact(_.flatten(_.zip(array1, array2)))

Just another solution using Array.prototype.flat() and Array.prototype.map().

var array1 = [1, 2, 3, 4, 5];
var array2 = ['a', 'b', 'c', 'd', 'e'];

var result = array1.map(
  (element, index) => [element, array2[index]]
).flat();

console.log(result);

If you must use jQuery, you can take advantage of their broken $.map implementation.

var result = $.map(array1, function(v, i) {
                                return [v, array2[i]];
                           });

jQuery's $.map flattens the returned array, giving you the result you want.

DEMO: http://jsfiddle.net/8rn2w/


Pure JS solution:

var result = array1.reduce(function(arr, v, i) {
                              return arr.concat(v, array2[i]); 
                           }, []);

DEMO: http://jsfiddle.net/8rn2w/1/


You can use the map method:

var array1 = [1, 2, 3, 4, 5];
var array2 = ['a', 'b', 'c', 'd', 'e'];

var arrayCombined = $.map(array1, function(v, i) {
  return [v, array2[i]];
});

console.log(arrayCombined);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Demo: http://jsfiddle.net/Guffa/hmUy6/