Пока у меня есть:
function pigIt(str) {
//split string into array of words
let words = str.split(" ");
//loop through array of words
for (let i = 0; i < words.length; i++) {
//loop through individual words
for (let j = 0; j < words.length; j++) {
//get first word in words
let firstWord = words[0];
//get first character in first word
let firstChar = firstWord[0];
//Create new word without first character
let unshiftedWord = firstWord.unshift(0);
//move first character to the end
let newWord = unshiftedWord.push(firstChar) + "ay";
return newWord;
}
}
}
console.log(pigIt('Pig latin is cool'));
Пока я просто хотел бы вернуть "igPay"
.Затем я объединю строки, чтобы сформировать новую строку.
Но это не нравится firstWord.unshift(0);
.Он говорит:
Ошибка типа: firstWord.unshift не является функцией.
Но .unshift () является функцией ?Почему это не работает?
Как только я смогу получить новое слово, я смогу объединить newWords
в newString
, хотя, возможно, есть более эффективный способ, чем создание новогопетли для каждого отдельного слова.
https://www.codewars.com/kata/520b9d2ad5c005041100000f/train/javascript
РЕДАКТИРОВАТЬ : Я хочу написать эту функцию с традиционным объявлением функции, а не с обозначением стрелки.
РЕДАКТИРОВАТЬ 2 После реализации кода @Ori Drori моя функция выглядит следующим образом:
function pigIt(str) {
newString = str.replace(/(\S)(\S+)/g, '$2$1ay');
return newString;
}
console.log(pigIt('Pig latin is cool'));
И это работает - но я не понимаю, что именно делает str.replace(/(\S)(\S+)/g, '$2$1ay');
.