• Почему при объявлении переменной, в любом языке программирования, резервируется весь размер памяти отведённый под тип данных?

    Вопрос из разряда "Почему в байте 8 бит?".

    Объявление переменной как раз является запросом на выделение памяти. Если вам необходимо выделить меньше памяти - можно использовать тип с меньшим размером - байт, бит. А примером динамически растущих структур памяти может быть какой-нибудь вектор из C++. В чем недостаток - накладные расходы. В случае недоступности непрерывного участка памяти при расширении классического массива, нужно будет скопировать всю структуру в другую область памяти. Гораздо быстрее и экономичнее с точки зрения скорости работы выделить сразу больший шмат памяти, благо её нынче не дефицит на ПК.
    Ответ написан
  • Есть ли смысл учить jquery?

    1. Выучить JS
    2. Поверхностно ознакомиться с jQuery
    3. Написать собственную микро-jQuery в учебных целях - реально поможет со всем разобраться.
    4. Использовать jQuery, если надо быстро клепать лендинги. Использовать чистый JS в более сложных проектах.

    Без знания JS не стоит браться за jQuery, потому что не захочется учить сам JS, а это вызовет огромные проблемы, когда нужно будет сделать что-то посложней. Сам когда-то давно начал с jQuery, и потом пришлось в авральном режиме изучать JS, много заказов потерял
    Ответ написан
    3 комментария
  • Как соеденить 2 массива?

    @StockholmSyndrome
    [...first, ...second].filter(({value}) => typeof value === 'number');
    Ответ написан
    1 комментарий
  • Как соеденить 2 массива?

    alexbuki
    @alexbuki
    программист js
    Как вариант соберите оба, потом ненужные элементы удалите.

    const third = second.concat(first);
    third.forEach((item,i)=>{
    if (!item.value || item.value == '' ) {
    third.splice(i,1);
    }
    });

    Либо, можно пробежаться по обоим массивам, добавляя в третии только нужные элементы
    Какое условие создания третьего массива не совсем понятно
    Ответ написан
    Комментировать
  • Как соеденить 2 массива?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Метод, как предлагали уже многие:
    1. склеить оба массива в один,
    2. пройтись последовательно по всем, собирая «словарь», где уникальный ключ name, а значение – весь объект с name и value. Перезаписывать предыдущий с таким же name или нет – по условию;
    3. вернуть массив значений этого «словаря» - уцелевшие уникальные объекты.


    const uniq = (a, b) => Object.values(
      a.concat(b).reduce(
        (acc, o) => {
          if (!acc[o.name]) acc[o.name] = o;
          else if (Number.isFinite(o.value)) acc[o.name].value = o.value;
          return acc;
        }, {}
      )
    );

    Для проверки, число это или нет, можно использовать метод Number.isFinite()

    Тесты
    //###########################
    const first = [{ name: 'first', value: '' }, { name: 'second', value: 10 }];
    const second = [{ name: 'first', value: 0 }, { name: 'third', value: 20 }];
    /*
    [
      {
        "name": "first",
        "value": 0
      },
      {
        "name": "second",
        "value": 10
      },
      {
        "name": "third",
        "value": 20
      }
    ]
    */
    
    //###########################
    const first = [{ name: 'first', value: 100 }, { name: 'second', value: 0 }];
    const second = [{ name: 'first', value: -111 }, { name: 'second', value: '' }];
    
    /*
    [
      {
        "name": "first",
        "value": -111
      },
      {
        "name": "second",
        "value": 0
      }
    ]
    */
    Ответ написан
    Комментировать
  • Насколько оправдано использование VUE?

    @andreysuha
    Что то знаю
    Eсли на 5 страницах у Вас 3 инпута и 2 селекта то наверное не стоит если что то более сложное, то думаю это будет не то что оправдано, а лучшим решением
    Ответ написан
    Комментировать
  • Как лучше сделать такой уголок с бордером?

    RomanTRS
    @RomanTRS
    Создать псевдо-элемент. Задать ему те же рамку и фон. Повернуть на 45 градусов. Убрать лишние рамки с двух сторон. Спозиционировать, как надо.
    Профит!
    Ответ написан
    Комментировать
  • Каким плохим вещам учит PHP?

    @Kostik_1993
    Web Developer
    Жить хорошо и кушать вкусно, но это не у всех))

    Ничему плохому он не учит, учат идиоты не умеющие писать код, а им хоть что подсунь получится дерьмо. Вот например оратор выше утверждает что он старый и все дела, но он просто видимо не в курсе текущего положения дел. Им видите-ли нужно чтобы он все умел и все мог)) Да есть узкие места где его лучше не использовать. Но со своими задачами для которых он придуман, он справляется на ура. Просто все эти хейтеры на самом деле не гуру прогеры, а лохи которые в свое время выбрали не тот язык под свои задачи.

    В настоящее время и синтаксис подтянулся на уровень, и строгая типизация появилась и много много всего. Учите основы и паттерны, а язык вам ничего плохого не даст.
    Ответ написан
    5 комментариев
  • Как получить чистый html код?

    Deonisius
    @Deonisius
    Родился в 11110110111 году, 11000 января.
    Вариант в песочнице
    var str = `<div draggable="true" onclick="return false;"  id="item_col-2" class="layout_el wtf  col-2 gap">
        <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">123</div>
        <div class="g-grid" ondrop="drop(event, this)" ondragover="allowDrop(event)">321</div>
    </div>`;
    
    // Допустимые классы
    const allowClasses = new Set(['col-2', 'gap', 'g-grid']);
    
    const wrapper = document.createElement('div');
    wrapper.innerHTML = str;
    wrapper.querySelectorAll('*').forEach(el => {
      [...el.attributes].forEach(attr => {
        if (attr.name !== 'class') {
          el.removeAttribute(attr.name);
        } else {
          [...new Set(el.classList)].filter(x => !allowClasses.has(x)).forEach(cls => {
            el.classList.remove(cls);
          });
        }
      });
    });
    console.log(wrapper.innerHTML);
    Ответ написан
    Комментировать
  • Как настроить https с 2-мя серверами nodejs?

    Lynn
    @Lynn
    nginx, js, css
    Если нужно https, то всё должно быть на 443 порту.
    Обычно это делают другим сервером (nginx, apache, что-нибудь другое) который слушает 443 порт, занимается расшифровкой ssl и проксирует запросы на нужные приложения согласно url.
    Примеров в сети куча.
    Ответ написан
    6 комментариев
  • Почему внешний скрипт JavaScript не работает?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что нужно разместить скрипт в конце файла, когда все элементы будут засчитаны:
    .....
        <script src="script.js"></script>
      </body>
    </html>

    Либо в скрипте использовать событие DOMContentLoaded, которое срабатывает в конце загрузки документа:
    Код
    var select, html;
    
    function update(bgColor, textColor) {
      html.style.backgroundColor = bgColor;
      html.style.color = textColor;
    }
    
    window.addEventListener('DOMContentLoaded', e=>{
      select = document.querySelector('select');
      html = document.querySelector('html');
      document.body.style.padding = '10px';
    
      select.onchange = function() {
        ( select.value === 'black' ) ? update('black','white') : update('white','black');
      }
    });
    Ответ написан
    Комментировать