今天一个朋友面试遇到了一个题目,然后看起来很简单,写的时候发现写不好
题目是这样的,给一个二位数组
// 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--