J'essaie de nous envisager la méthode javascript pour ajouter un "-" avant chaque capitale de mon tableau, mais cela ne fonctionne pas. Je ne sais pas ce que je fais mal. Voici mon code ci-dessous.
3 Réponses :
Vous avez changé votre tableau lorsque vous le faites:
strArr.splice(strArr.indexOf(strArr[i]),0, "-");
Lorsque vous ajoutez un nouvel élément avec p> Splice code> Vous augmentez la longueur code> de la matrice et la boucle n'est jamais capable de finir. Si vous travaillez la boucle à partir de la fin de la matrice au début, vous pouvez éviter ce problème.
function spinalCase(str) {
let strArr = [];
for (let i = 0; i < str.length; i++) {
strArr.push(str[i]);
}
// Work the loop from the end to the beginning
for (let i = strArr.length - 1; i >= 0 ; i--) {
if (strArr[i] !== strArr[i].toLowerCase()) {
strArr.splice(strArr.indexOf(strArr[i]), 0, "-");
}
}
console.log(strArr.join(''));
}
spinalCase('thisIsSpinalTap');
Je sais que vous vouliez utiliser une épissure, mais voici une petite solution de regex; Au cas où.
function spinalCase(str) { return str.replace(/[A-Z]/g, "-$&").toLowerCase(); } console.log(spinalCase("thisIsSpinalTap")) // this-is-spinal-tap