• Можете объяснить, что проиходить в каждой строчке кода?

    @n1ksON
    мидл
    var factorial = function(n) { // объявление функции
        var cnt // объявление пустой переменной cnt
        var res = 1 // объявление переменной res со значением 1
        for (cnt = n; cnt > 1; cnt--) { // цикл, по типу: for (var i = 0; i < 5; i++)
    // то есть пустой переменной cnt присваивается значение, 
    // которое пришло в аргументе n при вызове функции (в данном случае 4), 
    // цикл выполняется пока cnt больше 1, на каждой итерации от cnt отнимается 1
            res *= cnt; // значение res умножается на cnt
        }
        return res // возвращает получившееся значения res
    }
    console.log(factorial(4)) // выполнение функции с n = 4
    Ответ написан
    Комментировать
  • Double Linked List, почему функция не отрабаывает и как организовать remove?

    0xD34F
    @0xD34F Куратор тега JavaScript
    На вопрос "почему не отрабатывает" ответ смотрите в консоли - там есть соответствующее сообщение об ошибке.

    class DoublyLinkedList {
      constructor() {
        this.size = 0;
        this.head = null;
        this.tail = null;
      }
    
      add(value, index) {
        index ??= this.size;
    
        const next = this.searchByIndex(index);
        const prev = next ? next.prev : this.tail;
        const node = { value, next, prev };
    
        prev || (this.head = node);
        next || (this.tail = node);
    
        prev && (prev.next = node);
        next && (next.prev = node);
    
        this.size++;
      }
    
      _remove(node) {
        if (node) {
          node.prev || (this.head = node.next);
          node.next || (this.tail = node.prev);
    
          node.prev && (node.prev.next = node.next);
          node.next && (node.next.prev = node.prev);
    
          this.size--;
        }
      }
    
      removeByValue(value) {
        this._remove(this.searchByValue(value));
      }
    
      removeByIndex(index) {
        this._remove(this.searchByIndex(index, true));
      }
    
      searchByIndex(index, strict) {
        if (!(index >= 0 && index <= this.size - !!strict)) {
          throw 'invalid index';
        }
    
        let node = this.head;
    
        while (index--) {
          node = node.next;
        }
    
        return node;
      }
    
      searchByValue(value, startIndex = 0) {
        let node = this.searchByIndex(startIndex, true);
    
        while (node && node.value !== value) {
          node = node.next;
        }
    
        return node;
      }
    }
    Ответ написан
    Комментировать
  • Пожалуйста скиньте у кого есть или кто знает скрипт для такой простой "школьной" задачки?

    DmitryDDS
    @DmitryDDS
    Человек.
    Я конечно не математик, но попробую это решить.... Пришлось очень сильно всё поломать....
    dd = 14 день месяца(максимально 30 дней - поскольку 365 / 12 = 30)
    mm = 4 число месяца
    v = 1 есть ли високосный год или нет
    day = mm * 30 - (30 - dd) + v формула по выведению числовой нумерации дня.
    day = 4 * 30 - (30 - 14) = 120 - 16 = 104
    ответ 104 день.
    Ответ написан
    1 комментарий
  • JS Promise Memoize как правильно описать функцию?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function memoize(f, timeout) {
      const memo = {};
    
      return () => (new Date() < memo.time + timeout)
        ? Promise.resolve(memo.result)
        : f().then(r => (memo.time = +new Date(), memo.result = r));
    }
    Ответ написан
    Комментировать