2015-08-19 2 views
1

Надеюсь, вы поможете мне в этом. У меня есть следующий фрагмент кода:Незначительная проблема с двухмерным массивом

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 был определен или СТГ, как это.

+0

m - это всего лишь массив с 2 пустыми массивами внутри, поэтому все выше m [1] выдаст ошибку – juvian

+0

Я могу помочь рассказать нам немного о том, чего вы пытаетесь выполнить. Какова цель? – showdev

+0

В двухмерном массиве, который вы создали 'm', есть только две строки. Сначала вы должны заполнить массив множеством пустых массивов - больше, чем два, которые вы сделали в своем коде ('new Array ([], [])'). Вы можете добиться этого простым циклом. Также старайтесь избегать синтаксиса 'new Array (...)', где это возможно (редко требуется), и вместо этого выбирайте синтаксис '[...]'. – Mahout

ответ

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. х Первый расчет будет в m[0][0] и у первого расчета будет в m[0][1]
  5. Это дает т = [[x1, y1], [x2, y2], [x3, y3], ...] `

Если вместо этого вы хотите 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]; 
+0

Я решил использовать первый предложенный вами метод. Я надеюсь, что это хорошо подталкивает, но когда дело доходит до чтения массива, оно возвращает мне одни и те же значения ... Посмотрите, как я его читаю: 'while (i <= m.length) { xo = m [I] [0]; yo = m [i] [1]; ' – KDX2

+0

@ KDX2 Это слишком мало для продолжения. Это может быть несколько разных вещей. Возможно, попробуйте задать новый вопрос. Это привлечет новых людей к этому вопросу. – Paul

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) 
+0

sth, как это, но где мы получаем и сохраняем x и y? – KDX2

+0

@ KDX2 либо смените .push (p) на .push (x, y), либо вы можете использовать объект и сделать .push ({x: x, y: y}), а затем получить доступ как m [0] .x, m [2] .y – juvian

Смежные вопросы