Сортировка элементов многомерного массива по определенному индексу - PullRequest
0 голосов
/ 10 марта 2020

У меня есть массив массивов. Мой массив:

splitarr [Array0 [], Array3 [], Array [2], Array [1], Array [4] ...]

It как вы видите, не упорядочен правильно, я хочу упорядочить его так, чтобы он выглядел примерно так.

splitarr [Array0 [], Array1 [], Array2 [], Array3 [], Array [ 4] ...]

Чтобы лучше все понять. Существуют различные «функции», которые определяют, где будет отсортирован массив. До сих пор я написал функцию, которая правильно упорядочивает массив, когда «индекс», где он упорядочен неправильно, равен 0. Но чтобы полностью объяснить, как я знаю, где он упорядочен неправильно, потребуется слишком много времени, чтобы объяснить.

var dividersecond = 2;

«Секундный делитель», происходит от функции. Но что важно знать в этом контексте, это то, что мой массив упорядочен неправильно при таком количестве позиций, например, как:

splitarr [Array2 [], Array1 [], Array0 [], Array3 [] ...]

var splitarrayindex = 0;

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

mySplitArray = ReorderArray(dividersecond,splitarrayindex,mySplitArray);

function ReorderArray(Count,Index,Array){
    var originalIndex = Index;

    for(Index;Index<Count-1;Index++){
        var swapIndex= (Count-Index);
        var temp = Array[Index];
        Array[Index] = Array[swapIndex];
        Array[swapIndex] = temp
    }
    Array.splice(originalIndex,1);
    return Array;
}

Эта функция работает до тех пор, пока индекс равен 0. Что имеет смысл. Одна из моих проблем - "Count-1" , в "for-l oop" . Когда мой индекс равен «0» и 3 элемента (делитель = 2) упорядочены неправильно , мне, конечно, нужно «2» времени обмена . Если мой индекс равен «1», то «Count-1» может помешать этому.

Существуют другие вещи, которые определяют, будет ли мой массив упорядочен правильно, например, для определения Текущий индекс и текущий индекс свопа. Все это и тот факт, что я новичок в Javascript и сортировке массивов, оставляют меня без решения. Если бы кто-то мог помочь мне с функцией, которая была бы потрясающей!

Вот краткое описание того, что я хочу сделать в своем Коде. (Визуализируется с помощью чисел)

2103

(поменяйте местами на 0 и 2)

0123

Код, подобный этому, уже работает, поскольку индекс 0

03214

(Поменять местами индекс 1 и индекс 3)

01234

Как мне сделать эту работу?

1 Ответ

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

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

function ReorderArray(Count,Index,Array){
  var originalIndex = Index;
  for(var i = 0; i<Count-1;i++){
    var swapIndex = ((Count+originalIndex)-i);
    var temp = Array[originalIndex+i];
    Array[originalIndex+i] = Array[swapIndex];
    Array[swapIndex] = temp;
  }
  //delete the position at the original Index
  Array.splice(originalIndex,1);
  return Array;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...