Задать вопрос
  • Как из массива сделать объект?

    Tim-A-2020
    @Tim-A-2020
    Еще несколько способов, если вам не принципиальны ключи объекта
    Object.assign({}, [1,2,3,4,5]);  // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}

    т.е если будет такой массив ['a','b','c'], то получится
    Object.assign({},  ['a','b','c']);  // {0: "a", 1: "b", 2: "c"}

    Еще аналогичные способы
    {...[1,2,3,4,5]} // {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
    
    
    Object.fromEntries(Object.entries([1,2,3,4])); //  {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
    Ответ написан
    Комментировать
  • Как проверить чётность суммы элементов массива?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Как проверить чётность суммы элементов массива:

    const isSumEven = arr => arr.reduce((p, c) => p ^ c, 1) & 1;
    // или
    const isSumEven = arr => !(arr.filter(n => n % 2).length % 2);
    // или
    const isSumEven = arr => Number.isInteger(arr.reduce((acc, n) => acc + n, 0) / 2);
    // или
    const isSumEven = arr => /[02468]$/.test(eval(arr.join('+')) ?? 0);

    Получаем вложенные массивы: const result = arr.filter(isSumEven);.
    Ответ написан
    Комментировать
  • Как разбить массив из чисел на группы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function split(arr, numParts) {
      const partSize = arr.length / numParts | 0;
    
      return Array
        .from({ length: numParts }, (n, i) => i * partSize)
        .map((n, i, a) => arr.slice(n, a[i + 1]));
    }

    UPD. В комментариях было высказано мнение, что неплохо бы размерам кусков отличаться не более, чем на единицу, т.е., скидывать все "лишние" элементы в последний кусок не надо. Окей, раскидаем сколько можно по одному элементу в разные куски:

    function split(arr, numParts) {
      const partSize = arr.length / numParts | 0;
      const numLooseItems = arr.length % numParts;
    
      return Array.from(
        { length: numParts },
        function(_, i) {
          return arr.slice(this(i), this(i + 1));
        },
        i => i * partSize + Math.min(i, numLooseItems)
      );
    }
    Ответ написан
    3 комментария
  • Стать разработчиком в 40: насколько важны курсы?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Курсы зарабатывают деньги на обучении азам.
    Это их главная цель.

    Работодателям на курсы пофиг, потому что работодателям нужны работники, а не люди, едва освоившие азы.

    На программу курсов можно посматривать, но лучше посматривать на требования вакансий.
    Ответ написан
    Комментировать
  • Как правильно ответить на данный запрос из США?

    Please provide an email response specifically identifying the country in which the [Product Name] Software is developed and maintained.
    В письме укажите свою страну...
    If the country of origin is outside the United States, please provide any information you may have stating that testing is performed in the United States prior to supplying products to customers.
    ...скажите, что вы никакого тестирования в США не проводили, а про других ничего не знаете...
    Additionally, if available, please identify all authorized resellers of the product in question.
    ...поскольку ПО свободное, никто его не перепродаёт...
    Lastly, please confirm that the product(s) in question is not manufactured by, contain critical components developed by, or receive substantial political or monetary influence from entities prohibited by Section 889 of the 2019 NDAA.
    ...никакую из перечисленных компаний вы не знаете и денег от них не получали.

    Это просто бюрократы собирают информацию об используемом ими ПО. От вас, кроме этой информации, им ничего не нужно и вам ничего не грозит. Даже если вы получали деньги от указанных организаций, а программу писали на иранской ядерной станции, они просто обязаны будут перестать её использовать, но вам ничего не сделают.
    Просто напишите ответ своими словами, если им что-то будет непонятно - они уточнят.
    Ответ написан
    3 комментария
  • Как задать определенные ключи объекту?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    type TFood = Partial<Record<TFruit, Partial<Record<TFruitProps, string>>>>;
    Ответ написан
    5 комментариев
  • Сode review, как улучшить функионал?

    P.s. В промисах, async/await и другой магии адептов - пока что не разбираюсь...

    Разбирайся
    Ответ написан
    Комментировать
  • Как исправить баг?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Побольше всяких i, j, x, y, map, left, left1 и магических цифр - и не только искать ошибки станет невозможно, но и вообще разрабатывать дальше. Делайте хотя бы комментарии для себя (а заодно и для отвечающих), что где происходит.

    Как исправить баг?

    Отвечая на ваш вопрос, советую начать исправление бага с гугл-запроса: "оформление программного кода". Вот так и исправить.
    Ответ написан
    Комментировать
  • Как массив объектов собрать в один объект, объединив одноимённые свойства в массивы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const groupValues = (arr, defaultValue = null) =>
      arr.reduce((acc, n, i, a) => (
        Object.entries(n).forEach(([ k, v ]) =>
          (acc[k] ??= Array(a.length).fill(defaultValue))[i] = v
        ),
        acc
      ), {});
    
    const result = groupValues(arr, 0);
    Ответ написан
    Комментировать
  • Нужно ли эстимейтить больше времени на проект с нуля, если использовать с Reactом Typescript?

    fomenkogregory
    @fomenkogregory
    Юниор софтварный инженер
    Выглядит как будто ты ни разу не писал проект на тсе. тогда выделяй в 3 раза больше времени, пригодится когда будешь гуглить ошибки :)
    Ответ написан
    Комментировать
  • Как переделать код под ООП?

    Tim-A-2020
    @Tim-A-2020
    1. Идентификатор в коде документа должен быть в единственном экземпляре, иными словами, встречаться только один раз.
    2. Если элементы динамически не встраиваются, то поиск по class/id желательно вынести за функцию
    Сократить код можно примерно так
    class Scrolling {
        offset = null;
    
        scrolls() {
            const isOffset = pageYOffset > 100 ? "offsetOne" : "offsetSecond";
            if (this.offset != isOffset) {
                this[isOffset]({
                    registion: document.querySelector("#registion"),
                    vhod: document.querySelector("#vhod"),
                });
                this.offset = isOffset;
            }
        }
    
        offsetOne({ registion, vhod }) {
            registion.style.display = "none";
            vhod.style.cssText = "background:none;width:30px";
            vhod.innerHTML = "<img style='width: 20px; height: 20px;' src='SiteImage/logo_vhod.svg'>";
            PanelMenuLinks.style.cssText = "background:none;z-index:-1;margin-top:-45px;font-size:13px;color:#fff;border-top:0;";
            block_panel_menu_children.style.top = "10px";
            //block_panel_menu - заменить на класс.
            document.querySelectorAll("#block_panel_menu").forEach((item) => (item.style.height = "49px"));
            document.querySelector("#logotip").style.cssText = "opacity: 0;margin-top:-20px;";
            document.querySelector("header").style.height = "50px";
        }
    
        offsetSecond({ registion, vhod }) {
            registion.style.display = "block";
            vhod.style.cssText = "background:#626262;width:100px";
            vhod.innerHTML = "Регистрация";
            PanelMenuLinks.style.cssText = "background:#E7E7E7;margin-top:0px;font-size:18px;color:#000;border-top:10px solid #fff;";
            block_panel_menu_children.style.top = "20px";
            //block_panel_menu - заменить на класс.
            document.querySelectorAll("#block_panel_menu").forEach((item) => (item.style.height = "70px"));
            document.querySelector("#logotip").style.cssText = "opacity:1;margin-top:0px;";
            document.querySelector("header").style.height = "70px";
        }
    }
    const scroll = new Scrolling();
    window.addEventListener("scroll", scroll.scrolls.bind(scroll), false);
    Ответ написан
  • Как избегать foreach внутри foreach?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как избегать foreach внутри foreach?

    Сделать его не явным

    Очень часто вижу на разных форумах, в коммах в вк и тд юзать цикл внутри цикла не правильно

    Глупости. Если у вас структура данных - массив массивов даже заюзав какой-нить array_map/array_values/array_keys/array_merge/... вы все равно будете использовать двойной цикл, пусть и не явно. В случае рекурсивного обхода у вас будет точно так же цикл внутри цикла и тоже не явно.

    Каким образом можно сделать это по другому(правильно) ?

    Написать цикл внутри цикла и не выпендриваться.
    Ответ написан
    Комментировать
  • Асинхронность это отложенность?

    freeExec
    @freeExec
    Участник OpenStreetMap
    В общем случае да. Представь, что у тебя код
    var imageFromInternet = GetImageByUrl("http://example.com/big-image.bmp");
    picture.image = imageFromInternet;

    Есть вариант, когда GetImageByUrl тормозит твой код, пока картинка из инета не загрузится, а это может быть и пол часа. А если тебе надо сказать 10 таких картинок - это за займёт больше суток. И всё зависло, ты даже прогресс бар не можешь нарисовать, потому, что твой код выполняется где-то внутри GetImageByUrl.

    А есть вариант, когда тебе возвращают хендл операции и твой код тут же продолжается дальше. Вот она отложенность, фактически задача выполниться когда-то потом, а не сейчас. И ты получаешь возможность поставить на скачку одновременно все свои 10 картинок. А потом сидеть и ждать когда они все скачаются. И лишь затем, что-то уже с ними делать.

    По сути все операции с устройствами ассинхронны внутри, иначе бы всё вставало колом пока не дождалось бы ответа.
    Ответ написан
    Комментировать
  • Куда лучше пойти учиться?

    iamd503
    @iamd503
    Верстальщик
    Рассмотри лучше ролики на ютубе.
    Ответ написан
    2 комментария
  • Как удалить последний элемент массива?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Удаляем один элемент:

    arr.pop();
    
    // или
    
    arr.length -= !!arr.length;
    
    // или
    
    arr.splice(-1);

    Удаляем несколько (const count = сколько надо удалить;):

    for (let i = count; --i >= 0 && arr.length; arr.pop()) ;
    
    // или
    
    arr.length -= Math.max(0, Math.min(arr.length, count));
    
    // или
    
    count > 0 && arr.splice(-count);
    Ответ написан
    Комментировать
  • Как проверить, если ли в массиве объект со свойством, имеющим определённое значение?

    neuotq
    @neuotq
    Прокрастинация
    Можно написать функцию с такой логикой:
    const searchName = "Login2";
    const data= [
     {
          "id": "1",
          "login": "Login1",
       },
       {
          "id": "2",
          "login": "Login2",
       }
    ];
    const hasName = (el) => el.login === searchName ;
    //Просто проверка
    console.log(data.some(hasName));
    Ответ написан
    Комментировать
  • Как проверить, если ли в массиве объект со свойством, имеющим определённое значение?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    array.some(el => el.login === 'login2')
    Ответ написан
    Комментировать
  • Как строить карьеру senior разработчику?

    opium
    @opium
    Просто люблю качественно работать
    вам 33 года уже поздно спрашивать пора уже самому решать что делать в жизни.
    Ответ написан
    3 комментария
  • Как работает эта часть алгоритма?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пусть S = 1 + 2 + ... + n.
    Тогда, по условию задачи,
    a · b = S - a - b
    Зафиксируем a и решим уравнение относительно b:
    a · b + b = S - a
    (a + 1) · b = S - a
    b = (S - a) / (a + 1)
    Вот и получилась ваша формула.
    Ответ написан
    1 комментарий