Итак, это мое решение для 19-го дня конкурса #Scrimba #JavaScriptmas. Для меня это непросто, потому что я все еще джуниор-разработчик. Но у меня есть директор
Если не начать прямо сейчас, вы никогда ничего не начнете.
Итак, для этой статьи я попытаюсь объяснить, как работает код для этой задачи. Это исходный код
function alphabetSubsequence(str) { const isSequence = new Set(str); if(isSequence.size < str.length) { return false; }else{ for(let i = 0; str.length + 1; i++){ if(str.charCodeAt(i+1) <= str.charCodeAt(i)){ return false; }else{ return true; } } } }
Во второй строке кода
const isSequence = new Set(str);
Это означает, что я объявляю новую переменную с именем ‘isSequence’, а внутри нее находятся свойства объекта Set, значение которых взято из str. Объект «Set» имеет множество свойств внутри, но я использую «size» для этой задачи (то же, что и подсказка). Я использую ‘size’ для представления целочисленного значения внутри объекта, объявленного с помощью объекта Set.
Я имею в виду, что если у меня есть массив ['a', 'b', 'c', 'd', 'd'] , использование метода str даст значение 4, потому что внутри массива есть 4 основные струны (a, b, c и d). Дублирование буквы «d» не учитывается. Для этой задачи полезно передать условие, что строка не должна повторяться.
В третьей и четвертой строке кода
if(isSequence.size < str.length) { return false; }
Это означает, что нужно проверить значение object.size и str.length, если размер объекта больше, чем длина str, мы можем сделать вывод, что один из этих оспариваемых параметров не проходит. Таким образом, он вернет false.
В пятерке, пока остальная часть кода
else{ for(let i = 0; str.length+1; i++){ if(str.charCodeAt(i+1) <= str.charCodeAt(i)){ return false; }else{ return true; } } }
Первая его строка — оператор else, она была взята из кода ранее. После этого я использую цикл for для обхода строки (str). Пожалуйста, обратите внимание на «i+1». Я использую его, потому что позже он пригодится, чтобы сделать код более чистым и читабельным.
Используя метод charCodeAt, чтобы определить, что такое юникод из строки, и выполнить сравнение с одной из строк ранее. Я имею ввиду вот так, попробуй в консоли
const text = 'gcea' text.charCodeAt(0) // 103 text.charCodeAt(1) // 99 text.charCodeAt(2) // 101 text.charCodeAt(3) // 97 text.charCodeAt(4) // NaN
Что означает сравнение, если вторая строка больше первой строки (103 > 99), то она вернет false, потому что не удовлетворяет вторым требованиям вопроса. Это означает, что строка не записывается в последовательности. Если вторая проверенная строка больше, чем одна строка перед ней (99 ‹ 101), она вернет true, потому что номер строки размещен правильно.
И так далее, если мы запустим программу, вывод будет таким.
Если вы хотите проверить мой прогресс, вот ссылка.
Спасибо, надеюсь, это может дать вам немного понимания.