JavaScript 多维数组类

作者:yaya | 时间:2009年10月7日 | 分类 学海无涯 | 标签 javascript 数组 | 0回复

 我们知道javascript 的多维数组是通过模拟实现的,比如二维数组a[3][2]的实现:

二维数组a[3][2]
  1. var a = new Array(3)
  2. a[0] = new Array(2);
  3. a[1] = new Array(2);
  4. a[2] = new Array(2);

当然,写出 [ ] 的形式也是一样的意思。 

而写成var a = new Array(3,2)是不行的。

可以我们总想事情变得简单。所以写了MyArray。如下:

MyArray
  1. var MyArray = function(){
  2. var args = arguments;
  3. this.array={
  4. toArray:function(){
  5. var tempArray;
  6. var d= args.length-1;
  7. var ts='';
  8. tempArray=new Array(args[0]);
  9. var vtemp = new Array(d);
  10. for (var f=0;f<d;f++){
  11. ts+='for(vtemp['+f+']=0;vtemp['+f+']<'+args[f]+';vtemp['+f+']++)';
  12. ts+='{';
  13. var parm='tempArray';
  14. for (var p=0;p<=f;p++) parm+='[vtemp['+p+']]';
  15. ts+=parm+'=new Array('+args[(f+1)]+');'
  16. }
  17. for (var i=0;i<d;i++) ts+='}';
  18. eval(ts);
  19. return tempArray;
  20. }
  21. }
  22. return this.array.toArray();

 然后就可以直接var myArray = MyArray(2,3,2);

调用时候就可以直接写出myArray[x][y][z]即可

 调用的时候如下:

 

调用
  1. var myArray = MyArray(2,3,2);
  2. for (var x=0;x<2;x++)
  3.   for (var y=0;y<3;y++)
  4.      for (var z=0;z<2;z++)
  5.         myArray[x][y][z]=x+' '+y+' '+z;
  6.  
  7. for (var x=0;x<2;x++)
  8.   for (var y=0;y<3;y++)
  9.      for (var z=0;z<2;z++)
  10.         alert(myArray[x][y][z]);

 
暂时就一个toArray方法。myArray类型就是Array。而其他的length,sort等都还未写。慢慢加上好了。

好了。就写到这里啦。

 

  1. 1