Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

JS задача Мексиканская волна.

VIktor Ученик (55), на голосовании 1 год назад
 function wave(str) {
let resultArr = [];
let resultStr = " ";
str = str.toLowerCase().split("");
for (let i = 0; i < str.length; i++) {
if (str[i] == " ") {
continue;
} else {
resultStr = str.splice(i, 1, String(str[i].toUpperCase())).join("");
resultArr.push(ПresultArr);
}
}
console.log(resultArr);
}
wave("someone");
Помогите с задачей, накидал тут что-то.На входе слово, должен возврашаться массив, состоящий из n-элл, где логично n-число символов в строке.И каждый эллемент массива отличается тем, что следующий эллемент строки в верхнем регистре.Внизу есть пример, помогите пж.
1. The input string will always be lower case but maybe empty.

2. If the character in the string is whitespace then pass over it as if it was an empty seat
Example
wave("hello") => ["Hello", "hEllo", "heLlo", "helLo", "hellO"]
Голосование за лучший ответ
Дмитрий Знаток (429) 1 год назад
Вот решение:

function wave(str) {
const resultArr = [];

for (let i = 0; i < str.length; i++) {
if (str[i] == " ") {
continue;
} else {
let resultStr = str.slice().split("");
resultStr.splice(i, 1, String(resultStr[i].toUpperCase()));
resultArr.push(resultStr.join(""));
}
}

return resultArr;
}

Итоговую строку лучше задавать там, где она используется.
Проблема с циркуляром возникала, потому что в resultArr добавлялся сам resultArr.
splice - это деструктивный метод, он изменяет исходный массив, но главное - он возвращает то, что он вырезал из массива, т.е. 1 элемент массива, начиная с i.
при resultStr = str.splice(...) в resultStr записывается буква.
VIktorУченик (55) 1 год назад
ага,спасибо большое, а зачем тут slice не могу понять едиственное

 let resultStr = str.slice().split(""); 
ДмитрийЗнаток (429) 1 год назад
наверное, уже привычка делать копии с помощью .slice(), чтобы никак не взаимодействовать с пришедшим str, есть привило при работе с функциями, не мутировать пришедшие параметры, чтобы случайно не изменить их там, откуда они пришли.
Похожие вопросы