Javascript 合并两个数组,使值交替
我正在寻找一种jQuery方法来合并两个数组,以便它们的值交替: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
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()
(具有不同的支持)一步完成此操作