Функция, которая меняет элементы в массиве массивов, возвращает неопределенное значение по указанным c индексам - PullRequest
1 голос
/ 06 марта 2020

У меня есть массив массивов. Мой массив называется splitarr [Array2 [], Array1 [], Array0 [], Array3 [] ...] . Он не упорядочен правильно от Index Zero к index 2. Поэтому я хочу поменять splitarr так, чтобы он выглядел примерно так => splitarr [Array0 [], Array1 [], Array2 [], Array3 [] ...] . Однако мой код не работает. Когда я пытаюсь console.log мой массив, индексы, где элементы должны переключаться, равны undefined .

function blabla(){
dividersecond = 2;
splitarrayindex = 0;
splitarr = [[],[],[],[]] //this is just pseudo code line, i already heave a functioning array
splitarr = ReorderArray(dividersecond,splitarrayindex,splitarr);
console.log(splitarr);
}

У меня есть функция (это это только один раздел функции, потому что все остальное будет слишком длинным), где я пытаюсь вызвать функцию, которая переупорядочивает мой массив.

function ReorderArray(Count,Index,Array){

  var originalIndex = Index;

  for(Index; Index<Count;Index++){
    var swapIndex = (Count-Index);
    var temp = Array[Index];
    Array[Index] = Array[swapIndex];
    Array[swapIndex] = Array[temp];
  }
    return Array();
}

, если я делаю это так, моя консоль возвращает

[Array(8), undefined, undefined, Array(8), Array(8), Array(8)]

Я тоже пробовал это.

...
Array[Index] = Array[swapIndex];
Array[swapIndex] = Array[temp];
return Array();
  }
}

Но тогда консоль выдаст что-то вроде этого.

[Array(8), Array(4), undefined, Array(8), Array(8), Array(8)]

Я могу представить, что не так, как бы я ни был не уверен, и я не знаю, как это исправить.

Возвращение моего массива в l oop, конечно, не имеет никакого смысла, это просто завершит l oop, но это показывает, что на самом деле происходит при каждом запуске l oop .

Я много отлаживал и не могу прийти к какому-либо выводу. до сих пор значение в Array [Index], кажется, становится неопределенным в той позиции, в которой оно находится, когда вызывается l oop.

Итак, первый l oop выглядит так

[Array(8), Array(4), undefined, Array(8), Array(8), Array(8)]

, а второй l oop вот так

[Array(8), undefined, undefined, Array(8), Array(8), Array(8)] 

Был бы счастлив, если бы я получить некоторую помощь!

1 Ответ

0 голосов
/ 06 марта 2020

Вы правильно сохранили массив во временной переменной

temp = Array[Index];

Но когда вы пытаетесь восстановить его, вы пытаетесь получить доступ к положению 'temp' из 'Array'. Это не сработает.

Array[swapIndex] = Array[temp];

Я считаю, что вы хотели восстановить массив, сохраненный в 'temp'. Как это:

Array[swapIndex] = temp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...