2013-04-05 81 views
1

我试图找到一个JavaScript代码,它同时从两个数组中输入数据并将它们放入一个数组中。我认为这会奏效,但仔细看,它并不完成这项工作。javascript同时将两个数组的元素推入一个数组

var tempDeck = []; 
var array1 = ["one", "two"]; 
var array2 = ["three", "four"]; 
for (i = 0; i < array1.length + array2.length; i++){ 
    if (i % 2 == 0){ 
    tempdeck.push(array1[i]); 
    }else{ 
    tempdeck.push(array2[i]); 
    } 
} 

我它需要输出的

tempdeck[0] = "one"; 
tempdeck[1] = "three"; 
tempdeck[2] = "two"; 
tempdeck[3] = "four"; 

我试图避免在手动放置它们,因为数或阵列是基于用户输入的结果。 :(任何建议?

+0

而不是使用for循环和push尝试使用数组切片方法https://developer.mozilla.org/en-US/docs/JavaScript/Reference/ Global_Objects/Array/slice – Givi 2013-04-05 22:55:55

+0

如果数组的数量是基于用户输入的,那么你可能实际上并没有将它们存储在变量中,对吧?但是在你的问题的最上面,你说它是两个数组......那么它是什么? – 2013-04-05 22:56:33

回答

2

jsFiddle

你应该只使用较大的数组的长度,且仅当值存在索引i在增加。

var tempDeck = []; 
var array1 = ["one", "two"]; 
var array2 = ["three", "four"]; 
var len = array1.length > array2.length ? array1.length : array2.length; 
for (i = 0; i < len; i++){ 
    if(array1.length > i)tempDeck.push(array1[i]); 
    if(array2.length > i)tempDeck.push(array2[i]); 
} 
0

http://underscorejs.org/#union

union_.union(* arrays) 计算传入数组的联合:唯一项目列表(按顺序排列),它们存在于一个或多个阵列中YS。 ([1,2,3],[101,2,1,10],[2,1]);以及其中, => [1,2,3,101,10]

相关问题