我正在寻找一种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方法来执行此操作。
答案 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;
答案 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]);
}, []);
答案 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;
}