三个数组拼接问题
记录个小问题:
js按规则将三个数组合成一个二维数组?
var a1 = [1,2,3] ; var a2 = [4,5,6] ; var a3 = [7,8] ; //需要的结果: //[ [1,4,7],[1,4,8],[1,5,7],[1,5,8],[1,6,7],[1,6,8]... ] (共18个)
for循环实现:
var a1 = [1,2,3]; var a2 = [4,5,6]; var a3 = [7,8]; for(var i = 0; i < a1.length; i ++) { for(var j = 0; j < a2.length; j ++) { for(var k = 0; k < a3.length; k ++) { var arr = [a1[i],a2[j],a3[k]]; console.log(arr); } } }
恰巧刚看过 while 循环,再走一个:
var x = 0; var y = 0; var z = 0; while (a1[x]) { var arr = [a1[x], a2[y], a3[z]]; console.log(arr); z ++; if(!a3[z]){z = 0; y ++;} if(!a2[y]){y = 0; x ++;} }
^o^
再把 if 简化下:
if(!a3[z]) z = 0, y ++; if(!a2[y]) z = 0, x ++;
三目:
!a3[z] ? (z = 0) | (y ++) : '';
!a2[y] ? (y = 0) | (x ++) : '';