У меня есть функция, которая принимает строку и возвращает функцию.Возвращаемая функция принимает число и возвращает строку.Возвращенная функция возвращает исходную строку, повернутую на заданное число.
Мой код ниже работает.
function rotater (str){
return function (num){
let strArr = str.split('');
//console.log(strArr)
for (let i=0; i<num; i++){
//console.log(num)
let element = strArr[0];
//console.log(element)
strArr.push(element);
strArr.shift()
//console.log(strArr)
}
return strArr.join('')
}
}
const rotate = rotater('abcde');
rotate(4) // returns 'eabcd' as expected
Моя проблема связана со следующей тестовой спецификацией.Как только струна вращается полностью, она будет затем вращаться в другом направлении.
Ниже приведена тестовая спецификация:
it('once told to rotate fully will afterwards rotate in the other direction', () => {
const rotate = rotater('helloWORLD');
expect(rotate(1)).toEqual('elloWORLDh'); // same as before
expect(rotate(2)).toEqual('lloWORLDhe'); // same as before
rotate(10); // max value triggers rotation reversal
expect(rotate(1)).toEqual('DhelloWORL');
expect(rotate(2)).toEqual('LDhelloWOR');
expect(rotate(6)).toEqual('oWORLDhell');
rotate(10); // max value triggers rotation reversal
expect(rotate(1)).toEqual('elloWORLDh');
expect(rotate(2)).toEqual('lloWORLDhe');
expect(rotate(6)).toEqual('ORLDhelloW');
});
Я не совсем понимаю, как пройти вышеуказанную тестовую спецификацию.Нужно ли вставлять оператор if плюс разрыв в моем коде?Пожалуйста, дайте мне, какой код отсутствует для прохождения вышеупомянутой спецификации.