Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并两个数组,使值交替_Javascript_Jquery_Arrays_Merge - Fatal编程技术网

Javascript 合并两个数组,使值交替

Javascript 合并两个数组,使值交替,javascript,jquery,arrays,merge,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方法来执行此操作。尝试以下操作: function merge(array1, array2

我正在寻找一种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方法来执行此操作。

尝试以下操作:

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;
}
函数合并(array1,array2){
if(array1.length==array2.length){
var c=[];
对于(变量i=0;i
您可以使用
map
方法:

vararray1=[1,2,3,4,5];
变量array2=['a','b','c','d','e'];
var arrayCombined=$.map(array1,函数(v,i){
返回[v,array2[i];
});
console.log(arrayCombined)
如果必须使用jQuery,则可以利用其已损坏的
$.map
实现

var result = $.map(array1, function(v, i) {
                                return [v, array2[i]];
                           });
jQuery的
$.map
将返回的数组展平,从而得到所需的结果

演示:


纯JS解决方案:

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

演示:

只是另一个使用和的解决方案

vararray1=[1,2,3,4,5];
变量array2=['a','b','c','d','e'];
var result=array1.map(
(元素,索引)=>[元素,数组2[索引]]
).flat();


控制台日志(结果)没有jquery方法。为什么它需要在jquery中完成?!为什么?正如你所说的,用普通JavaScript做起来很简单。为什么?它与DOM或其他jQuery专用的东西无关。是否必须有一种jQuery方式来完成所有事情?如果它在JavaScript中是微不足道的,那么就用JavaScript完成它。使用正确的工具来完成这项工作。不要抱怨或做任何事情,但这可以很容易地用不同长度的数组来完成。jQuery不够(啊,最后我有一个合理的理由这么说)。是的,这是绝对可以做到的,但我首先想到的是这个,所以尝试了!!!要匹配指定的格式,您应该将
c.push([array1[i],array2[i]])
更改为
c.push(array1[i],array2[i])
。它是有文档记录的,所以不是bug@JanDvorak:是的,但在我看来它还是坏掉了。@JanDvorak:你比我优雅得多。:)
var arrayCombined=array1.map(函数(v,I){return[v,array2[I]];}).reduce(函数(a,b){返回a.concat(b);})对于ES5,感谢您真正回答了这个问题,而不是对如何在没有jQuery的情况下实现这一点大惊小怪。+1对于在jsiddle中添加链接,我首先通过jsiddle找到它。我对@jAndy的代码进行了概括,以支持要合并的数组。这是用ES6编写的:
combined=arraysArray[0].map((v,i)=>arraysArray.reduce((a,b)=>a.concat(b[i]),[])).reduce((a,b)=>a.concat(b),[])
.array of array版本,如@GalTalmor's:
combined=arraysArray.reduce((t,u,v,w)=>u.reduce((x,y,z)=>(x[z*w.length+v]=y,x),t),[])很快!注意:
Array.prototype.flat()
需要Node.js 11.0.0或更高版本。现在可以使用
Array.prototype.flatMap()
(具有不同的支持)一步完成此操作