Как я могу выпасть из l oop? - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь написать функцию, которая может вращать массив влево, например, 1,2,3,4,5,6,7,8,9 и поворачиваться к 4,5,6,7,8,9 , 1,2,3. Во-первых, я использую эту функцию ниже, но результат 4,2,3,7,5,6,1,8,9. Поэтому я думаю, что он не выпадает из l oop, потому что он выполняется только один раз в l oop. Пожалуйста, кто-нибудь может мне помочь с этим? Любая помощь будет оценена! Заранее спасибо.

var a =[1,2,3,4,5,6,7,8,9];
var len =a.length;
for (i=0;i<3;i++ )
{   
    var b = a[i];
    var j = i;
    for(k=0;k<a.length;k++)
      {
        j+=3;
        if(j<a.length)
        {
            a[i] = a[j];
            i=j;
        }
        else {
            j-=3;
            a[j]=b;
            break;
        }

    }   
}

console.log(a);

Ответы [ 2 ]

1 голос
/ 06 января 2020

Я не уверен в подходе, который вы используете, но использование shift и push позволит достичь этого очень легко:

var a =[1,2,3,4,5,6,7,8,9];
var len = a.length;
for (i = 0; i < 3; i++) {
  a.push(a.shift());
}

console.log(a);

Вывод:

4,5,6,7,8,9,1,2,3

shift удаляет элемент first из массива. Вот некоторые документы .

push помещает элемент в конец массива. Вот некоторые документы для него.

0 голосов
/ 06 января 2020

Если вам нужен алгоритм без методов массива, вы можете сделать это так:

var a=[1,2,3,4,5,6,7,8,9];
console.log(a);

//Iteration of rotation (Here rotated left 3 times) this can be as many as you want.
for(let i=0;i<3;i++){
  //Store 'First Member' and 'Last Index' of array
  let last = a.length - 1;
  let first = a[0];

  //Loop to store every (n+1)th term to nth except the last one
  for(let j=0;j<last;j++){
    a[j] = a[j+1];
  }

  //Finally add first item to last index
  a[last] = first; 
}

console.log(a);
...