三个数组拼接问题

记录个小问题:

  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 ++) : '';

 

posted @ 2017-05-05 17:22  名字不好起啊  阅读(728)  评论(0编辑  收藏  举报