Проблема с двумерным массивом и для l oop в javascript - PullRequest
0 голосов
/ 23 апреля 2020

Моя проблема связана с возможностью читать двумерный массив внутри a для l oop. Я прочитал много вещей о закрытии в javascript, но не могу найти способ применить их в этой ситуации

Некоторая информация, чтобы лучше понять мой код: tempArray

  • Сохраняется с использованием фабрики ... У меня есть два установленных метода, и я читаю и устанавливаю их
  • Это двумерный массив, определенный следующим образом

        for (var i = 0; i < MAX_DIM; i++) {
      $scope.squareArray[i]=  new Array(10);
      count++;
    }

  • Инициализируется следующим образом

    for (var i = 0; i < MAX_DIM; i++)
    for (var j = 0; j < MAX_DIM; j++)
    $scope.squareArray[i][j] = "X";
    
  • В директиву я сохраняю в tempArray мой двумерный массив, подобный этому

    tempArray = abcModel.getModel ("Квадраты");

Где abcModel.getModel определяется с помощью abcModel.setModel для моей фабрики

В этом двумерном массиве я храню некоторую информацию о сетке квадратов , Я рисую квадратную сетку, используя директиву, которая имеет функцию для инициализации холста на основе значения в двумерном массиве

Это часть кода, в которой я пытаюсь прочитать хранилище значений в массиве.

MAX_DIM  = 10;
  for (var  x = 0 ; x < MAX_DIM ; x++)
    for (var  y = 0 ; y < MAX_DIM ; y++)
    {

    if (tempArray[y][x] == 'X')
      fillColor  = "#EAD5C5";
    else if (tempArray[y][x] == 'W')
      fillColor  = "#CBA76A";



    ctx.rect(x*50,y*50,50,50);
    ctx.fillStyle = fillColor;
    ctx.fill();
    ctx.lineWidth = "2";
    ctx.strokeStyle = "#13B2DD";
    abcModel.setModel("count",abcModel.getModel("count") + 1);
    ctx.stroke();
    }

Теперь, используя этот код, можно правильно нарисовать все прямоугольники на холсте (так что x и y зацикливаются правильно), но я читаю каждый раз, когда значение сохраняется в последнем элементе массива, например Функция использует только последние значения как для х, так и для у. Я знаю, что код ведет себя таким образом, потому что следующее представление в моем веб-приложении зависит от значений элементов в массиве.

Я нашел кое-что о закрытии на javascript и проблемном шве, связанном с что, но я не могу понять, как решить проблему в этой ситуации

Я пытался использовать let вместо var, а также использовать функцию закрытия, но ничего не работает

Не могли бы вы помочь мне?

...