二维数组的小问题

时间:2015-08-19 20:46:54

标签: javascript

我希望你能帮我解决这个问题。我有以下代码:

var m = new Array([],[]);
var p=1; 
while(p<=20){
  x=formula.;
  y=formula.;
  m.push(x);
  m[p-1].push(y) //here spits and error - Uncaught Type Error: m[(p - 1)].push is not a function
  p++;
 ...
}

我也试过'm[p][0]=x'; 'm[p][1]=y;' but on m[p][0]. ..抛出错误,因为扇区0未定义或者像这样。

2 个答案:

答案 0 :(得分:1)

我相信你正在尝试做这样的事情:

var m = new Array();
var p=1; 
while(p<=20){
  m.push([]) // we add an empty array to m so p-1 position exists
  m[p-1].push(p) // we add an element to m[p-1]
  p++;
}

console.log(m)

答案 1 :(得分:1)

var m = [];
var p=1; 
while(p<=20){
  x=formula;
  y=formula;
  m.push([x,y]);
  p++;
}

注意:

  1. 您很少需要Array(),而是使用[],更短。
  2. 所有数组都是单维的,但您可以嵌套数组
  3. 您可以根据[x,y]
  4. 等变量构建数组
  5. 第一个计算的x将位于m[0][0],第一个计算的y将位于m[0][1]
  6. 这产生m = [[x1,y1],[x2,y2],[x3,y3],...]`
  7. 如果您希望m=[[x1,x2,x3,...],[y1,y2,y3,...]]应该以不同的方式编码:

    var xs=[],ys=[];
    var p=1; 
    while(p<=20){
      x=formula;
      y=formula;
      xs.push(x);
      ys.push(y);
      p++;
    }
    
    var m = [xs,ys];