合并两个数组以使值交替

时间:2012-11-06 15:09:33

标签: javascript jquery arrays merge

我正在寻找一种jQuery方法来合并两个数组,以便它们的值交替出现:

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

我想要的结果是:

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

请注意我知道在JS中执行此操作是微不足道的,但是我遵循jQuery方法来执行此操作。

4 个答案:

答案 0 :(得分:27)

您可以使用map方法:



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>
&#13;
&#13;
&#13;

演示:http://jsfiddle.net/Guffa/hmUy6/

答案 1 :(得分:16)

如果你必须使用jQuery,你可以利用他们破碎的$.map实现。

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

jQuery的$.map展平返回的数组,为您提供所需的结果。

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


纯JS解决方案:

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

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

答案 2 :(得分:4)

这是使用Array.prototype.flat()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);

答案 3 :(得分:2)

尝试这样的事情: -

 function merge(array1, array2) {
if (array1.length == array2.length) {
    var c = [];
    for (var i = 0; i < array1.length; i++) {
        c.push([array1[i], array2[i]]);
    }
    return c;
}
return null;

}