javaScript--二维数组逆向输出

今天一个朋友面试遇到了一个题目,然后看起来很简单,写的时候发现写不好

题目是这样的,给一个二位数组

// Tips 长度都是不固定的
var arr = [
    [1,2,3,4],
    [5,6,7,8,9,10],
    [11,12],
    [13,14,15,16,17,18]
]

输出这种格式:
1,5,11,13,2,6,12,14,3,7,12 ....
然后,每秒输出一个下标。

我一看这么简单,写了之后发现坑不少,然后写了好久才写出来。

不解释,放代码:

 var arr = [
            [1,2,3,4],
            [5,6,7,8,9,10],
            [11,12],
            [13,14,15,16,17,18]
        ]

        // 单列运行
        var arrRuning = false
        // 计数
        var losn = -1
        // 求最长的数组
        var maxLength = 0

        arr.forEach(function(e){
            e.length > maxLength
            ? maxLength = e.length
            : ''
        })

        for(var k = 0; k <= maxLength; k++){
            arr.forEach(function(e,i,a){
                if(!arrRuning){
                    // 二维数组的长度
                    this.length = e.length
                }
                arrRuning = true
                losn++

                ;(function(n,e,k){
                    window.setTimeout(function(){
                            if(e[k]){
                                console.log( e[k] )
                            }
                    },1000*n)
                })(losn,e,k);

            })
        }

--END--

你可能感兴趣的:(javaScript--二维数组逆向输出)