Задать вопрос
  • Как создать статический массив?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Есть ли вообще в js статический массив нашёл реализацию и может ли он вообще пригодится?

    Да, есть, да, используется. RTFM:
    class Foo {
      static bar  = [];
    }


    Не понятно многомерные массивы это разновидность Двумерных, Трёхмерных или что-то другое?

    Наоборот: х-мерные массивы и есть многомерные массивы, просто для упрощения используются конкретные термины для многомерных массивов конкретной мерности.

    Зачем нужны зубчатые?

    Затем, чтобы хранить массивы разного размера в одном массиве или блоке памяти.
    Ответ написан
    1 комментарий
  • Почему функции, классы, объекты это не структуры данных?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Структура — всего лишь абстрактное описание представления данных, которое не зависит от способа реализации или языка программирования (можно в массиве элементы передвигать, а можно и камушки на песке). Соответствующие функции и методы объектов или классов реализуют конкретную логику поведения и обработки данных для той или иной структуры.
    Ответ написан
    Комментировать
  • Как объект, состоящий из массивов значений свойств, преобразовать в массив объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const arr = Object
      .entries(obj)
      .reduce((acc, [ k, values ]) => (
        values.forEach((v, i) => (acc[i] ??= {})[k] = v),
        acc
      ), []);

    или

    const keys = Object.keys(obj);
    const arr = obj[keys[0]]?.map((_, i) => {
      return Object.fromEntries(keys.map(k => [ k, obj[k][i] ]));
    }) ?? [];
    Ответ написан
    Комментировать
  • Как создать новый object из key и value?

    KarnaDev
    @KarnaDev
    Frontend developer
    Вы в index используете Object.assign для создания объекта, но не севсем правильно оборачиваете результат в map.
    Я бы, честно говоря, заменила на reduce, семантически он там логичнее:
    } else if (Array.isArray(value)) {
      return value.reduce((acc, key) => {
        acc[key] = indexs[key];
        return acc;
      }, {});
    }

    И вначале, где indexs создаете, можно тоже через reduce и c константой
    const indexs = index.reduce((acc, key, i) => {
      acc[key] = arr[i];
      return acc;
    }, {});

    Еще я бы предложила отказаться от let arrs и indexs, вы их не переиспользуете, почему бы не сразу const
    Ответ написан
    1 комментарий
  • С чего начать изучать алгоритмы и структуры данных?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Можешь почитать "Алгоритмы. Руководство по разработке". Сам читал, база нормальная.
    Но то, о чем ты сказал (разбивать задачи на подзадачи и т.д.) - это называется "научиться мыслить аналитически". Этому нельзя научиться читая книжки - только через опыт получаешь насмотренность и набиваешь шишки. Поэтому одновременно с книгой/курсом решай задачи на условном литкоде.

    P.S. я считаю что математика нужна, т.к. она и позволяет получить вот это аналитическое мышление через призму функций, мат. абстракций, которые после переносятся на базовые конструкции ЯП (функции, переменные)
    Ответ написан
    1 комментарий
  • В React Native можно использовать REST API?

    @rasfront
    React native разработчик
    Можете использовать большинство http клиентов таких как axios или иные. Только есть несколько моментов. Для того чтобы в продакшене приложение нормально коннектилось к серверам и работало с сетью удостоверьтесь что у вас используется https вместо http (частая проблема многих, которые протестировали приложение, но на продакшене у них не работали запросы)
    Ответ написан
    Комментировать
  • Почему функция возвращает только один элемент массива?

    Rimush
    @Rimush
    Ну так все правильно, return возвращает первый itemPrice[0] (функция возвращает ответ один раз а не как вы хотите много раз в цикле) и закрывает функцию article.
    Хотите возвращать массив, так формируйте вначале массив а в конце возвращайте его.
    Ответ написан
    Комментировать
  • Почему функция возвращает только один элемент массива?

    Maksim_64
    @Maksim_64
    Data Analyst
    Потому что выражение return прерывает функцию. То есть у тебя происходит только одна итерация цикла, и затем выход из функции. Собери itemPrice[0] в список объявленный вне цикла (result.append(itemPrice[0])) и верни result вне цикла. Имей ввиду то что ты в своей имплементации объявил itemPrice вне цикла и это имеет 0 эффекта, так как при каждой итерации у тебя создается новый объект, например вот здесь itemPrice = i.find(...
    Ответ написан
    1 комментарий
  • Почему после обновления bios в boot нету ssd?

    @Arioch
    Вероятно, включился режим загрузки EFI, когда загрузчики должны не просто быть на диске, а регистрировать себя в BIOS.

    При этом в списке загрузки кроме дисков появляется такая зверюшка, например, как Windows Boot Manager, неизвестно на каком диске записанная, которая уже сама дальше будет диски обнюхивать.

    На сломавшемся нынче гигабайтовском микро-ПК похожее было каждый раз после сброса настроек (перенесли ПК по морозу в другой дом), нужно было в настройках загрузки включить EFI, перезагрузиться, и потом в меню найти Windows Boot - иначе не загружалось
    Ответ написан
    Комментировать
  • Почему после обновления bios в boot нету ssd?

    @ivanbigua
    Возможно, там есть еще какие-то настройки по активации SSD дисков?
    Ответ написан
    2 комментария
  • Где можно применить hexagonal architecture?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Чистая архитектура - это просто идея, а не готовая архитектура. Гексагональная - частный случай чистой.
    В блоге Роберта Мартина первыми строками идет:
    Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:

    Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
    Onion Architecture by Jeffrey Palermo
    Screaming Architecture from a blog of mine last year
    DCI from James Coplien, and Trygve Reenskaug.
    BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach
    Ответ написан
    1 комментарий
  • Как сконфигурировать бэк и фронт через api?

    liaFcipE
    @liaFcipE
    Причем тут VDS, зачем вам вообще нода? Чистый Vue это больше о SPA. Вы о SPA или SSR/G?

    Если вы хотите классический SPA, то вам (не) нужна нода, она нужна для сборки и локальной разработки, но на выходе у вас статика (html, js, css и еще какой-то набор ассетов аля картинки, шрифты и так далее).

    Что там делает API и как он живет - фронту не важно и его не касается, ему не важно какой там стек, фронту важно одно - адрес, где бекенд живет и чтобы бекенд отдавал ответы на запросы в нужном фронту формате.

    Поэтому что вам конфигурировать? Что вы хотите?
    Ну в общих чертах вам нужен:

    nginx, который:
    - Отдает статику на 80/443 с вашим index.html и набором ассетов.
    - Дает доступ к API проксипасом на условный путь /api юзая php-fpm линком с другого контейнера.

    Как вы это упакуете на уровне докера - хз, делайте как удобно. Только понимайте, что фронт для локальной разработки нужно запускать в dev режиме, через nodejs, (HMR там и все такое) а для пре\прода - собирать в статику.

    Поэтому, я бы вообще локально фронт не запускал в докере, а работал прямо на машине, в докере держал бы только всю инфру бекенда.

    Да и как вы хотите хранить проекты? Монореп или все таки разные репы? Если разные - можете вообще сделать для каждого проекта сборку в docker имаджы и сторить их где-то в Gitlab Registry или аналогах с независимым деплоем фронта и бека. кароче вариантов масса. Выбирайте по возможностям и средствам. Возможно вам проще нанять прошаренного девопса.
    Ответ написан
    Комментировать
  • Почему ended отрабатывает несколько раз?

    Kentavr16
    @Kentavr16
    long cold winter
    Проблема в том что ты добавляешь прослушиватель просто в коде и нигде его не очищаешь. Если учесть что компонент может рендериться несколько раз, особенно в режиме разработки, то и прослушивателей может навеситься несколько. Используй для этого хук эффекта , в котором укажи что при размонтировании компонента нужно удалить слушатель события.
    Ответ написан
    1 комментарий
  • Как подгрузить данные из объекта?

    0xD34F
    @0xD34F Куратор тега React
    Объект менять не нужно.

    Нужно.

    Так будет лучше, просто поверьте:

    const SERIES = [
      {
        comment: '1 сезон',
        folder: [
          { comment: '1 серия' },
          { comment: '2 серия' },
        ],
      },
      {
        comment: '2 сезон',
        folder: [
          { comment: '1 серия' },
          { comment: '2 серия' },
          { comment: '3 серия' },
        ],
      },
    ];
    
    const ItemsList = ({ header, items, active, onChange }) => (
      <div>
        <h3>{header}</h3>
        <ul className="items">
          {items.map(({ comment }, i) => (
            <li
              className={`item ${active === i ? 'active' : ''}`}
              onClick={() => onChange?.(i !== active ? i : -1)}
            >
              {comment}
            </li>
          ))}
        </ul>
      </div>
    );
    
    function App() {
      const [ iSeason, setActiveSeason ] = useState(-1);
      const [ iEpisode, setActiveEpisode ] = useState(-1);
      const season = SERIES[iSeason];
      const episode = season?.folder[iEpisode];
    
      useEffect(() => {
        setActiveEpisode(-1);
      }, [ iSeason ]);
    
      return (
        <div>
          <ItemsList
            header="сезоны"
            items={SERIES}
            active={iSeason}
            onChange={setActiveSeason}
          />
          {season && <ItemsList
            header="серии"
            active={iEpisode}
            onChange={setActiveEpisode}
            items={season.folder}
          />}
          {episode && <div>Выбрали: {season.comment}, {episode.comment}</div>}
        </div>
      );
    }
    Ответ написан
  • Как в reducerе обратиться к другому reducerу?

    0xD34F
    @0xD34F
    Что имеет сказать на этот счёт документация:

    The functions passed to the reducers parameter can be accessed through the caseReducers return field.

    Так что

    playlistSlice.caseReducers.playAudio(state, { payload: state.id });
    Ответ написан
    3 комментария
  • Как исправить ошибку при редактировании сайта?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    - Включить другую тему и попробовать снова нажать "Редактировать сайт".
    - Отключить плагины и попробовать снова нажать "Редактировать сайт".
    - Возможно, у Вас слишком древний браузер, который не поддерживает JS метод .at(), зайдите с современного браузера и снова нажмите "Редактировать сайт".

    Попробуйте и сообщите о результате.
    Ответ написан
    9 комментариев
  • Нужен redux или переборщил с разделением на компоненты?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Или можно обойтись без него?

    Чем больше приложение, тем более оправданно использование централизированного хранения состояния.
    Ответ написан
    2 комментария
  • Как спрятать scrollbar в div и отставить возможность скроллинга?

    @daniel_wesson
    Есть хороший вариант:
    <div class="div1">
    	<div class="div2">
    		Тут контент
    	</div>
    </div>

    .div1 {
    	width: 300px;
    	height: 500px;
    	overflow: hidden;
    }
    .div2 {
    	overflow-y: scroll;
    	max-height: 100%;
    	width: 100%;
    	padding-right: 45px;
    	background: lightpink;
    }
    Ответ написан
    1 комментарий
  • Как объединить два массива в один у которых ключи id и user_id с одинаковыми значениями?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Object.values(arr1.reduce((acc, { user_id: id, ...n }) => {
      Object.entries(n).forEach(([ k, v ]) => acc[id][k] = (acc[id][k] || 0) + v);
      return acc;
    }, Object.fromEntries(arr2.map(n => [ n.id, {...n} ]))))

    если надо, чтобы в исходном и результирующем массивах элементы с одинаковыми id располагались на одних и тех же местах, то вместо обычного объекта собираем данные в Map:

    [...arr1.reduce((acc, { user_id: id, ...n }) => {
      const obj = acc.get(id);
      Object.entries(n).forEach(([ k, v ]) => obj[k] = (obj[k] || 0) + v);
      return acc;
    }, new Map(arr2.map(n => [ n.id, {...n} ]))).values()]

    или, вместо Object.values извлекаем данные из объекта через map по исходному массиву:

    arr2.map(function(n) {
      return this[n.id];
    }, arr1.reduce((acc, { user_id: id, ...n }) => (
      Object.keys(n).forEach(k => acc[id][k] = (acc[id][k] || 0) + n[k]),
      acc
    ), Object.fromEntries(arr2.map(n => [ n.id, {...n} ]))))
    Ответ написан
    Комментировать
  • Где найти много задач по Javascript?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Тут много задач на разные сложности https://leetcode.com/ Это если чисто алгоритмические задачи. А так, на https://learn.javascript.ru есть задачки к каждой главе, тоже полезно порешать.
    Еще мне нравится вот этот раздел https://leetcode.com/explore/interview/card/top-in... тут список вопросов по разным темам, которые задают на собеседовании. Но нельзя просто в лоб это решать, нужно иметь алгоритмическую базу.
    Ответ написан
    Комментировать