刚才看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array.matrix = function (row, col, inital) {
var arr = [];
for(var i = 0; i < row; i++) {
var colom = [];
for(var j = 0; j < col; j++) {
colom[j] = inital;
// arr[i][j] = inital;// 可读性较差
}
arr[i] = colom;
}
return arr
}
其实也没必要, 一般我们创建一个一维数组的时候,压根不需要什么方法.
直接 var arr = [] 就完事了.
但二维数组的定义,好歹也得写好几行,可以考虑弄个api
可以弄个遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
Array.prototype.SqEach = function (fn) {
var len1 = this.length;
var len2 = this[0].length;
for(var i = 0; i < len1; i++) {
for(var j = 0; j < len2; j++) {
fn(this[i][j],i,j,this[i],this);// 后面的参数我怀疑压根都不需要..
}
}
}
function handle (item,i,j) {
console.log(item, i, j);
}
arr.SqEach(handle);
这会感觉,上面的inital,有点不灵活, 或许可以这样?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Array.matrix = function (row, col, inital) {
var arr = [];
for(var i = 0; i < row; i++) {
var colom = [];
for(var j = 0; j < col; j++) {
if (typeof inital == "function") {
colom[j] = inital();
}else {
colom[j] = inital;
}
}
arr[i] = colom;
}
return arr
}
var aaa = (function () {
var count = 0;
return function () {
return count++;
}
})();
var arr = Array.matrix(5, 5, aaa);
console.log(arr);