我正在尝试采用两个一维数组并将它们交织到一个新数组中。例如
var price = result.response.availableProducts[i].price;
var priceFinal;
if(price != null){
priceFinal = price;
}else{
priceFinal = 0;
}
获取这两个数组并将它们交织在一起
a = (1,2,3) & b = (44,55,66,77,88)
我真诚地相信我已经解决了它,但是我不知道为什么这段代码会输出
c = (1,44,2,55,3,66,77,88)
代码:
c/interleave as 1,44,2,55,66,77,88,0
答案 0 :(得分:1)
您正在针对b.length
检查k
,并针对a.length
检查j
。因此,当k
变成3
时,您的第二个if
将用interleave[i]
覆盖b[k]
。 k
和j
应该切换:
if (((i % 2 == 0) || (j >= b.length)) && (j < a.length))
{ //^^^
interleave[i] = a[j];
j++;
}
if (((i % 2 == 1) || (k >= a.length)) && (k < b.length))
{ //^^^
interleave[i] = b[k];
k++;
}
输出:
[1, 44, 2, 55, 3, 66, 77, 88]