2
votes

Faire pivoter les éléments d'un tableau

J'essaye de résoudre un défi javascript de jshero.net. Le défi est le suivant:

Ecrivez une fonction de rotation qui fait pivoter les éléments d'un tableau. Tous les éléments doivent être déplacés d'une position vers la gauche. Le 0ème élément doit être placé à la fin du tableau. Le tableau pivoté doit être renvoyé. rotate (['a', 'b', 'c']) devrait renvoyer ['b', 'c', 'a'].

Tout ce que je pouvais trouver était ceci:

function rotate(a){
  let myPush = a.push();
  let myShift = a.shift(myPush);
  let myFinalS = [myPush, myShift]
  return myFinalS
}

Mais le message d'erreur que j'ai reçu était:

rotate (['a', 'b', 'c']) ne renvoie pas ['b', 'c', 'a'], mais [3, 'a']. Erreur de test! Corrigez l'erreur et relancez les tests!

J'ai l'impression de manquer quelque chose de vraiment simple mais je ne sais pas quoi. Avez-vous d'autres moyens de résoudre ce problème?


0 commentaires

5 Réponses :


3
votes
function rotate(array){
   let firstElement = array.shift();
   array.push(firstElement);
   return array;
}

1 commentaires

ÇA MARCHE. Merci beaucoup.



1
votes

Pour obtenir la sortie que vous recherchez, vous devez d'abord utiliser Array.shift() pour supprimer le premier élément, puis en utilisant Array.push() ajouter l'élément à la fin du tableau, puis renvoyer le tableau, le problème est que vous avez utilisé le mauvais odeur pour ces étapes, la méthode .push() prend également l'élément à ajouter comme argument, voici un extrait de code de travail:

function rotate(a){
  let myShift = a.shift();
  a.push(myShift);
  return a;
}

console.log(rotate(['a', 'b', 'c']));


1 commentaires

Ça marche maintenant. Merci pour l'explication également.



1
votes

Ici, j'ai créé un utilitaire dans lequel le tableau d'entrée ne sera pas muté même après la rotation du tableau selon l'exigence.

function rotate(a){
  let inputCopy = [...a]
  let myShift = inputCopy.shift();
  let myFinalS = [...inputCopy, myShift]
  return myFinalS
}

console.log(rotate([1,2,3]))
console.log(rotate(["a","b","c"]))

J'espère que cela t'aides.


0 commentaires

1
votes
function rotate(arr){
    let toBeLast = arr[0];
    arr.splice(0, 1);
    arr.push(toBeLast);
    return arr;
}
console.log(rotate(['a', 'b', 'c']));
New to stack overflow. Hope this helps :)

0 commentaires

0
votes
rotate('a', array)
console.log(array)

// > Array ["a", "b", "c", "d"]

0 commentaires