• Как сложить несколько двумерных массивов по индексам?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Без всяких оптимизаций (голое сложение в цикле):
    код
    var arr1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
    var arr2 = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]];
    var arr3 = [[100, 200, 300, 400], [500, 600, 700, 800], [900, 1000, 1100, 1200]];
    
    function summ_array(...arrs){
       return arrs.reduce((acc,arr)=>{
          if( Array.isArray(arr))
             arr.forEach((subarr, i)=>{
                if(!Array.isArray(acc[i])) 
                   acc[i] = []
                if( Array.isArray(subarr))
                   subarr.forEach((v, j)=>{
                      if(!acc[i][j]) 
                         acc[i][j] = 0;
                      acc[i][j]+=v;
                   });   
             });
          return acc;
       },[]);
    }
    var summ = summ_array(arr1, arr2, arr3);
    console.log(summ);




    Ответ написан
    24 комментария
  • Как получить users.get vk api введя ссылку в input?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    elem = document.getElementById('inputId');
    elem.onchange = function() {
    //Работайте с users.get внутри этой функции. 
    //сработает при изменении значения инпут
    //для сокращения количества запросов в users.get можете также здесь сделать if() с
    //парсингом строки: если строка начинается
    //с "vk.com/" то начать запрашивать users.get.
    //До тех пор просто слушать
    }
    Ответ написан
    Комментировать
  • Почему свойство length массива неперечисляемое, но метод .propertyIsEnumerable(length) возвращает true?

    0xD34F
    @0xD34F Куратор тега JavaScript
    arr.propertyIsEnumerable(length)
    // => true

    Вы тут не свойство length проверяете, а свойство, чьё имя совпадает со значением переменной length - и что у вас в ней лежит, да хрен его знает. Может быть число, соответствующее какому-то индексу массива - тогда неудивительно, что получаете true.

    UPD. Могу предположить, что за length там у вас - если вы сами её не объявляли, это window.length.
    Ответ написан
    Комментировать
  • Почему не удаляется обработчик события клика?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Метод bind() создаёт каждый раз новую копию функции.

    Для отмены слушателя нужно передать именно действующий обработчик, а не похожий.
    Запишите его в переменную и далее действуйте с переменной:
    const listener = this.onclickWindowHandler.bind(this);
    window.addEventListener('click', listener);
    // ...
    window.removeEventListener('click', listener);
    Ответ написан
    Комментировать
  • Как начать зарабатывать начинающему web-разработчику в 17 лет?

    Zoominger
    @Zoominger
    System Integrator
    Как начать зарабатывать начинающему web-разработчику в 17 лет?

    Макдональдс, стройка, кошение травы.

    зарабатывать на вебе

    Пхаха.

    Хочу устроиться джуном в веб-студию удаленно

    Никто. Никогда. Не берёт. Джунов. На удалёнку. Точка.

    Может устроиться к кому-нибудь на фриланс

    Нет.

    Как начать зарабатывать на фрилансе?

    Никак.

    Каждую, чёрт бы её побрал, неделю такие посты. Ну погуглите хоть по Тостеру-то.

    Коротко: это очень плохой план, дикая конкуренция людей со знаниями и опытом выше вашего не дадут вам никаких шансов. Выбирайте другую область.
    Ответ написан
    29 комментариев
  • Как запретить ввод символов и букв в input поле с помощью JS?

    Omnicake
    @Omnicake
    Начинающий web-разработчик.
    На HTML5 это можно сделать и без JS, достаточно в тег input добавить аттрибут pattern с требуемым регулярным выражением. А для Вашей ситуации можно даже просто указать input type="number".
    <input type="number" pattern="^[ 0-9]+$">
    Ответ написан
    2 комментария
  • Для чего все-таки нужны интерфейсы?

    @kova1ev
    Представь у тебя есть какой-нибудь метод, который принимает в агрументах объект, например, типа User
    doSomething(User user)
    Ты можешь передавать в этот метод любой объект типа User или объекты классов, наследующих User.
    Но можно сделать еще гибче, например описать некий интерфейс UserInteface и указать в определении метода его:
    doSomething(UserInterface user)
    Теперь ты можешь передавать в метод объект любого класса, который реализует интерфейс UserInterface.
    Разумеется, изначальный класс User из этого примера тоже должен реализовывать этот интерфейс.

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

    И, как уже написали выше, один класс может реализовывать несколько интерфейсов.
    Ответ написан
    Комментировать
  • Как превратить объекты со ссылками в JSON?

    @kova1ev
    Не понимаю, зачем задают такие вопросы.

    Задача с learn.javascript

    Там же можно посмотреть решение, если сам не можешь додуматься. Но автор почему-то хочет задать вопрос на тостере. Автор, зачем?
    Ответ написан
    Комментировать
  • Как перенести проект с XE3 на Rio?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    • Установить Embarcadero Delphi 10.3 Rio.
    • Установить DevExpress version 18.1.7.
    • Устранить ошибки и предупреждения.
    Ответ написан
    Комментировать
  • Как сократить до десяток в JS?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    аналогичный вопрос на тостере: Как округлить число до сотых js?

    Метод объекта Number .toFixed() округляет до заданного числа знаков после десятичной точки.

    PS: результат вежливой просьбы.
    kiril9011, смотрите 9 строчку!
    Ответ написан
    7 комментариев
  • Как перевести не обязательные параметры с С на Delphi?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Только передачей параметров в массиве.
    procedure TForm1.Display(X: array of const);
    var
      I: Integer;
    begin
      for I := Low(X) to High(X) do
      ...
    end;
    
    Display([42, 1.234, 'A', 'Васек Трубачев', Form1, TButton]);
    Ответ написан
    Комментировать
  • Как исправить 'str' object is not callable?

    @deliro
    Как же вы одолели, мамкины ботописцы, по 50 постов в день от вас. Откуда вы взялись такие бездари? И хоть бы один толковый вопрос про питон, архитектуру, что угодно. Нет, все ваши вопросы связаны с тем, что вы, бездари, не в силах взять свои малюсенькие ручонки в кулак, засунуть туда свою лень и прочитать три десятка страниц учебника по языку, на котором пишете.
    Ответ написан
    2 комментария
  • Оптимизировать код или как выделить всю вычислительную мощность пк на его выполнение?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Первое, что бросается в глаза - это многократное копирование массива. Представьте, что при сортировке мы бы после каждых двух-трех перестановок делали бы полный дубликат массива. Это же ужас! И это слабое место, постоянное перевыделение памяти больших размеров.

    Второе, что тоже важно - это сложность O(N*N). В вашем случае это критично, потому что много элементов в исходном массиве.

    Предлагаю немного изменить алгоритм. Делаем одно прохождение, но немного увеличиваем потребление памяти, в которой храним интервалы. Таким образом, мы избавляемся от постоянного копирования массива, а также уменьшаем сложность примерно до O(N).

    И маленькая оптимизационная хитрость - поиск интервала происходит по индексу, то есть O(1). Нужно немного поразмыслить, чтобы до этого догадаться, но в целом всё просто.
    Код
    <?php
    $arr = [100,125,75,175,25,300,275,325,375];
    $step = 50;
    
    $b = []; //-1 - deny, 0 - not set, 1 - has interval
    $int = []; //intervals if necessary 
    $step2 = intdiv($step,2);
    $arr = array_values(array_filter($arr, function($v) use ($step2,&$b,&$int) {
        $i = intdiv($v,$step2);
        $mod = $v % $step2;
        $res = true;
        if (isset($b[$i])) {
            if ($b[$i] === -1) $res = false;
            elseif ($mod < $int[$i][0] or $mod > $int[$i][1]) $res = false;
        }
        $b[$i] = -1;
        $b[$i+1] = -1;
        $b[$i-1] = -1;
        if (!isset($b[$i+2])) {
            $b[$i+2] = 1;
            $int[$i+2] = [$mod,$step2];
        } elseif ($b[$i+2] === 1) {
            if ($int[$i+2][0] < $mod) {
                $int[$i+2][0] = $mod;
                if ($int[$i+2][0] >= $int[$i+2][1]) $b[$i+2] = -1;
            }
        }
        if (!isset($b[$i-2])) {
            $b[$i-2] = 1;
            $int[$i-2] = [0,$mod];
        } elseif ($b[$i-2] === 1) {
            if ($int[$i-2][1] > $mod) {
                $int[$i-2][1] = $mod;
                if ($int[$i-2][0] >= $int[$i-2][1]) $b[$i-2] = -1;
            }
        }
        return $res;
    }));
    
    var_dump($arr); // [100, 175, 25, 300, 375]
    ?>

    Переписав алгоритм на С++, получите дополнительно 50-кратное увеличение скорости.
    Ответ написан
    3 комментария
  • В каких единицах получается ответ?

    DevMan
    @DevMan
    где–то сейчас загрустил как минимум один из писателей mdn и множества других манов.
    Ответ написан
    Комментировать
  • Можно ли сделать на js программу на windows, движок Pixi.js?

    @abmanimenja
    Electron

    Но это только из крайней необходимости. Скажем, если не можешь/не хочешь писать качественное ПО. Когда нет специалистов, нет денег на специалистов и т.п. Но есть под рукой недорогие JS-программисты из сферы веба - имеет смысл тогда.

    Ибо будет медленно же.
    Ответ написан
    2 комментария
  • Как получить ID пользователя через access_token?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    users.get() без параметров вернёт инфу о текущем пользователе – чей токен.
    Ответ написан
    1 комментарий
  • Замена в JS, по регулярному, как?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    var data = "<a href='/page/2/'>2</a> <a href='/page/33/'>44</a>";
    
    var scpec_data = data.replace(
      /<a href='\/page\/(\d+)\/'>(\d+)<\/a>/g,
      '<a onclick="call(\'$1\');return false;">$2</a>'
    );
    
    console.log(scpec_data);
    //"<a onclick="call('2');return false;">2</a> <a onclick="call('33');return false;">44</a>"
    Ответ написан
    1 комментарий
  • В чем смысл быть гуру тостера?

    rockon404
    @rockon404
    Frontend Developer
    1. Помогать другим приятно.
    2. Зарядка для ума.
    3. Обучение других людей - важный шаг в развитии, как профессионала, так и личности в целом.
    4. Помогая другим часто узнаешь новое, видишь старые задачи под новым углом, сталкиваешься с новыми, рождаются новые идеи.
    5. Какое-никакое общение на профессиональные темы.

    для чего просиживаете на тостере по 5-6 часов в день

    Зачем? Можно просто подписаться на интересующие технологии и оповещения о новых вопросах будут приходить на почту. Хотя, я бы добавил Push-уведомления.

    но вы то ничего и не спрашиваете.

    Нечего спрашивать. Единственные серьезные проблемы с которыми сталкиваюсь в проектах - архитектурные задачи, требующие целого комплекса знаний. Алгоритм решения подобных задач давно отработан. Для проблем поменьше так же есть алгоритм поиска решения.
    Ответ написан
    Комментировать