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?
5 Réponses :
function rotate(array){ let firstElement = array.shift(); array.push(firstElement); return array; }
ÇA MARCHE. Merci beaucoup.
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']));
Ça marche maintenant. Merci pour l'explication également.
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.
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 :)
rotate('a', array) console.log(array) // > Array ["a", "b", "c", "d"]