合并两个数组以使值交替

Und*_*ion 13 javascript arrays merge jquery

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

var array1 = [1,2,3,4,5];
var array2 = ['a', 'b', 'c', 'd', 'e'];
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

var arrayCombined = [1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e'];
Run Code Online (Sandbox Code Playgroud)

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

Guf*_*ffa 28

您可以使用以下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);
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

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

  • `var arrayCombined = array1.map(function(v,i) { return [v, array2[i]]; }).reduce(function(a,b) { return a.concat(b); });` 对于ES5-香草JS (9认同)
  • 感谢您真正回答这个问题,而不是在没有jQuery的情况下如何做到这一点. (3认同)

I H*_*azy 16

如果必须使用jQuery,则可以利用其破坏的$.map实现.

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

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

演示: http : //jsfiddle.net/8rn2w/


纯JS解决方案:

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

演示: http : //jsfiddle.net/8rn2w/1/

  • 它被记录下来,所以它不是一个bug (2认同)
  • @JanDvorak:是的,但 IMO 仍然损坏。 (2认同)
  • 我可以忍受"不直观";-) (2认同)
  • @JanDvorak:你比我亲切多了。:) (2认同)

小智 5

使用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);
Run Code Online (Sandbox Code Playgroud)


ric*_*ler 5

对于那些通过搜索引擎到达这里并想要 Lodash 选项的人:

_.compact(_.flatten(_.zip(array1, array2)))
Run Code Online (Sandbox Code Playgroud)