• Есть 3 элемента массива, при их сравнении ничего не происходит?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    операции сравнения в JS выполняются подвое, слева направо.

    это значит, что сначала в if-выражении выполнится сравнение первых двух элементов board[0][0] === board[0][1], после чего, полученное значение (trueилиfalse) будет сравниваться с оставшимся элементом.
    board[0][0] === board[0][1] /* 1 этап: получили true */
    true === board[0][2] /* 2 этап: получили false, т.к true сравнивается с "x" */

    чтобы всё работало так, как задумано, нужно воспользоваться оператором &&:
    if (board[0][0] === board[0][1] && board[0][1] === board[0][2]) { ... }
    или же, для улучшения читаемости кода, можно добавить функцию:
    const isEqual = (value, ...values) => values.every(el => el === value);
    /* 1 параметр (value) - это значение, с которым будут сравниваться все остальные переданные в функцию значения */
    
    isEqual(board[0][0], board[0][1], board[0][2]) // true
    isEqual(7, 7, 7, 7, 7, 7, 6) // false
    isEqual(1, 1, 1, 1, 1, 1) // true
    Ответ написан
    Комментировать
  • Использовать методы или самому писать функции?

    @dan_kosenko
    Node.js Developer
    В каких ситуациях есть смысл:
    • Улучшить свои знания. Допустим самому попробовать реализовать какие-то алгоритмы, чтобы лучше понимать как работает поиск, сортировка, обход древовидных структур и так далее;
    • Специфичные требования. Например вам нужна высокая производительность, ваш основной стек на Back-end - это Node.js. Так вышло, что вам не хватает производительности и поэтому вы берёте и переписываете нужный NPM пакет на на c++;
    • Раз коснулись темы NPM, то другой пример. В NPM миллионы пакетов на любой случай жизни и так бывает, что нецелесообразно тянуть зависимость ради пару десятков строчек кода.

    Когда НЕ стоит изобретать велосипед:
    • Проверенные алгоритмы. Например не стоит в продакшене самому писать библиотеки для работы с шифрованием, если конечно у вас не стоит такая задача. Самописная криптография грозит тем, что вы можете допустить ошибку в шифровании и получить уязвимость, а аудит вашего кода скорее всего не будут проводить десятки экспертов.
    • Придумывать новые фреймворки. Тут просто без должного опыта ничего хорошего не получится.
    • Ограниченные ресурсы и время. Программисты чаще всего работают на кого-то и им выделяются конкретные ресурсы и время на проект. Создание/проектирование новых библиотек, фреймворков и компонентов занимает достаточное большое количество времени. И таким образом вы просто не выполните поставленные задачи, если будете придумывать велосипеды.

    В своих проектах можно придумывать всё самостоятельно, но я бы для начала посоветовал научиться работать с готовыми библиотеками, чтобы преждевременно не перегрузить себя работой, которую выполнить хорошо на начальном этапе будет очень сложно.
    Ответ написан
    Комментировать