Итак, это мое решение для 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, потому что номер строки размещен правильно.

И так далее, если мы запустим программу, вывод будет таким.

Если вы хотите проверить мой прогресс, вот ссылка.



Спасибо, надеюсь, это может дать вам немного понимания.