猿问

关于前端面试题

给定行数和列数,写3个函数分别输出如下的二维数组(假设给的行数是5,列数是4):

1 2 3 4

5 6 7 8 

9 10 11 12

13 14 15 16

17 18 19 20 


1 6 11 16 

2 7 12 17

3 8 13 18

4 9 14 19

5 10 15 20


1 10 11 20 

2 9 12 19

3 8 13 18

4 7 14 17

5 6 15 16

这个怎么做啊? 

(function(window, document) {
let sorts = function(option) {
    this._init(option);
};
sorts.prototype._init = function(option) {
this.arrs = option.arr;
this.rows = option.rows;
this.cols = option.cols;

this._create();
};
sorts.prototype._create = function(option) {
let nums = 0;
for (let i = 0; i < this.rows; i++) {
document.write('<br>');
for (let j = 0; j < this.cols; j++) {
if (this.arrs[nums]) {
document.writeln(this.arrs[nums]);
nums++;
}
}
}
};
window.sorts = sorts
})(window, document);
new sorts({
    rows: 5,
    cols: 4,
    arr: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']
});

 这个类型不能算。

丛从绿草
浏览 898回答 1
1回答

pardon110

关键是写出行列之间的关系 如下所示// 横书 function rowFirst(rows,cols){   n = 1   arr = []    for (i=0; i < rows; i++){     s = ''     arr[i] = []         for(j=0;j<cols;j++,n++){         arr[i].push(n)         s += n + ' '         }     console.log(s+"\n")     }   return arr; } // lineFirst(5,4) // 竖版 function colsFirst(rows,cols){    arr = []     for (i=0; i < rows; i++){      s = ''      arr[i] = []      for(j=0;j<cols;j++){        arr[i].push(i+1+rows*j)        s += arr[i][j] + ' '      }      console.log(s+"\n")     }   return arr; } // colsFirst(5,4) // 之走 function reverseFisrt(rows,cols){    arr = []     for (i=0; i < rows; i++){        s = ''        arr[i] = []         for(j=0;j<cols;j++){         if(j%2==1){           arr[i].push(rows*(j+1)-i)         }else{          arr[i].push(i+1+rows*j)         }        s += arr[i][j] + ' '      }      console.log(s+"\n")     }   return arr; } console.log(reverseFisrt(5,4))最后一个函数调用效果图如下2 9 12 19 3 8 13 18 4 7 14 17 5 6 15 16 [ [ 1, 10, 11, 20 ],   [ 2, 9, 12, 19 ],   [ 3, 8, 13, 18 ],   [ 4, 7, 14, 17 ],   [ 5, 6, 15, 16 ] ]
随时随地看视频慕课网APP
我要回答