Дело было так: смотрел собесы по джаве на ютубе и случайно наткнулся на собес по js. Решил выучить js, как второй язык. Буквально за день дошел до ООП, не включая его, так прям досканально прошелся, по малому уровню, в чем различия типов и т.д.
Ну это так, предисловие)
Решил, что нужно практиковаться и пришел на кодварс.
Начал решать задачи 6кью.
И чуть ли не в каждой задаче я решал ее, а потом смотрел на топовые решения, почти все они были в 1 строку, когда у меня было 50.
Вот пример:
function songDecoder(song){
song = Array.from(song);
let newArr = [];
for(let i = 0; i < song.length; i++){
if (song[i] === "W" && song[i+1] === "U" && song[i+2] === "B") {
song[i] = "";
song[i + 1] = "";
song[i + 2] = "";
} else {
if (song[i] === "W" && song[i + 1] === "U" && song[i + 2] === "B") {
continue;
}
newArr.push(song[i]);
}
}
let i = 0;
while(i < newArr.length){
if (newArr[i].length === 0){
newArr.splice(i, 1);
}
i++;
}
for (let i = 0; i < newArr.length; i++){
if(newArr[i] === "" && newArr[i + 1] === ""){
newArr.splice(i, 1);
}
if(newArr[0] === ""){
newArr.splice(0, 1);
}
if(newArr[newArr.length - 1] === ""){
newArr.splice(newArr.length - 1, 1)
}
}
let finalString = "";
let j = 0;
while(j < newArr.length){
if (newArr[j] !== ""){
finalString += newArr[j];
} else {
finalString += " ";
}
j++;
}
return finalString.replace(/\s{2,}/g, ' ').trim();
}
// console.log(songDecoder(" WUAB "));
И топовое решение:
function songDecoder(song){
return song.replace(/(WUB)+/g," ").trim()
}
function songDecoder(song){
return song.split('WUB').filter(Boolean).join(' ');
}
Хотелось бы попросить объяснить смысл вот этой вот строки:
return song.split('WUB').filter(Boolean).join(' ');
Какова вообще польза от таких задач? И стоит ли их продолжать дальше решать, ибо я чувствую, что все упирается в знание языка?