• Почему svg теряет свое качество при изменении размера?

    @lagudal
    это не ощущение, у вас таки png внутри -
    <image id="image0" width="1732" height="308" xlink:href="data:image/png;base64
    Ответ написан
    Комментировать
  • Как сериализовать вложенный объект?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const serialize = (obj, path) => Object
      .entries(obj)
      .map(([ k, v ]) => {
        const p = path ? `${path}[${k}]` : k;
        return v instanceof Object ? serialize(v, p) : `${p}=${v}`;
      })
      .join('&');
    Ответ написан
    Комментировать
  • Как отрефакторить такой код?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Общую часть похожих кусков кода превращаем в функцию, а то, чем они различаются, будем передавать в эту функцию в качестве параметров:

    [
      { del: 'region_id', search: 'regionName' },
      { del: 'district_id', search: 'districtName' },
      { del: 'area_id', search: 'areaName' },
      { del: 'city_id', search: 'cityName' },
      { del: 'place_id', search: 'cityName' },
      { del: 'name', search: 'streetName' },
    ].forEach(n => {
      if (this.tableParam[n.del]) {
        delete this.tableParam[n.del];
        this.searchForm.get(n.search).patchValue(null);
      }
    });
    Ответ написан
    5 комментариев
  • Как из двух массивов сделать объект с новыми свойствами?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Это не объект, а новый массив.
    Получите:
    var items = [
        {
          id: "1",
          name: "тест1",
          parents_names: ["Московская", "Орехово-Зуевский"],
          parents_levels: [1, 3]
        },
        {
          id: "2",
          name: "Тест2",
          parents_names: ["Карелия", "Прионежский", "Центральный"],
          parents_levels: [1, 3, 7]
        },
        {
          id: "3",
          name: "Тест3",
          parents_names: ["Санкт-Питер"],
          parents_levels: [1]
        },
    ];
    
    var data = {
    	1 : 'region',
    	3 : 'area',
    	7 : 'street'
    
    }
    
    console.log(items.map(function(i) {
    	i.parents_levels.forEach(function(p, ind) {
    		i[data[p]] = i.parents_names[ind];
    	})
    	delete i.parents_names;
    	delete i.parents_levels;
    	return i;
    }));
    Ответ написан
    4 комментария
  • Как из двух массивов сделать объект с новыми свойствами?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const t = {
      1: 'region',
      3: 'area',
      7: 'street',
    };
    
    const newItems = items.map(n => ({
      id: n.id,
      name: n.name,
      ...n.parents_names.reduce((acc, name, i) => (
        acc[t[n.parents_levels[i]]] = name,
        acc
      ), {}),
    }));
    Ответ написан
    1 комментарий
  • В какой последовательности изучать JavaScript?

    rim89
    @rim89
    программист-велосипедист
    Нет
    1. Сперва нужно понять для чего он вам нужен
    После выбрать стек для этого:
    JS - это нативный язык, основа.
    Всё остальное - это дополнения.
    JQUERY - самое просто из списка, доп библиотека, которая облегчала работу с селекторами и XHR запросами
    Gulp - это менеджер задач, т.е. автоматизация рутинных работ, например по сборке проекта
    WebPack - это большой комбайн, в который перекрывает своим функционал Gulp и другие "помощники"
    Angular / Vue / React - это фреймворки, экосистемы со своими особенностями.
    Angular - требует знания TypeScript - надмножество над JS со строгой типизацией и не только.

    Node.js - это серверная вариация JS
    MongoDB - база данных

    Т.е. как видно отдельные области применимости. Чтобы решать какую то задачу все знать не нужно. Поэтому нужно определиться что нужно / требуется.
    Ответ написан
    Комментировать
  • Как плавно увеличивать блок при наведении?

    0xD34F
    @0xD34F Куратор тега CSS
    Я не понимаю как можно увеличить плавно блок, чтобы расширялся равномерно со всех сторон и также чтобы менялась картинка на другую и плавно увеличивалась

    Увеличение - с помощью scale, картинку показывать "плавно" можно с помощью opacity. Как-то так.
    Ответ написан
    2 комментария
  • Только начал учить javascript как понять?

    EreminD
    @EreminD
    Кое-что умею
    //javascript такой: хоба! Функция, которая принимает на вход один параметр 
    //и возвращает результат в виде х*х.
    //Пожалуй, я ее запомню, потом, может, пригодится
    var square = function(x) { return x*x; }; 
    
    //потом javascript такой: ага, надо че т в консоль вывести (то, что в скобках). 
    //А че в скобках? Итить-мадрить, это ж та самая функция, котораю я прост запомнил. 
    //Надо ее вызвать и на вход подать 12. Тогда мне вернется 12*12 и это я выведу в консоль.
    console.log(square(12));
    
    //огонь


    А если понятнее, то вот
    Ответ написан
    7 комментариев
  • Какая разница между обычным указыванием типа (через двоеточие) и через дженерик тип?

    EreminD
    @EreminD
    Кое-что умею
    это не одно и то же

    указывая через :
    вы говорите, какого типа переменная или что возвращает метод

    например
    name: string
    age: number
    getAge() : namber {}

    -------------------------------------------
    Дженерик устроен сложнее и для другого

    В вашем примере, переменная ingredientAdded имеет тип EventEmitter
    т.е. справедливо
    ingredientAdded : EventEmitter

    но
    сам EventEmitter должен содержать в себе какой-то тип данных (здесь - Ingredient)
    По сути, EventEmitter может принимать примитивы или объекты и его работа будет неизменна
    -------------------------------------------
    Дженерики приятны, когда вы хотите определить какую-то логику, не завязываясь на тип данных. Что это значит?

    Предположим, я хочу метод, который будет принимать на вход что угодно (строка, число, объект и т.д.), а возвращать массив этого чего угодно

    function convertToArray<T>(arg: T): T[] {
        let arr: T[];
    //здесь логика заполнения этого массива
        return arr;
    }

    теперь я могу вызывать
    let numbers =  convertToArray<number>(5)
    let strings = convertToArray<string>('test')
    let users = convertToArray<User>(new User())


    Теперь у меня есть один метод, который делает одно и то же, но с разными типами данных
    -------------------------------------------
    Возвращаясь к EventEmitter. Эмиттер создает событие и держит внутри какие-то данные заданного типа
    если вы делаете
    @Output() ingredientAdded = new EventEmitter<Ingredient>();
    , то теперь вы можете вызвать ingredientAdded.emit(myIngredient) , передав в emit экземпляр именно класса Ingredient, а не boolean, например

    -------------------------------------------
    А вообще, тема дженериков достаточно распространенная (Java, C#, TypeScript...), советую уделить ей внимание
    Ответ написан
    Комментировать
  • Как получить доступ к данным из соседнего окна браузера?

    @BorisKorobkov
    Web developer
    Нестандартная задача.
    Нужно получить доступ к данным соседнего окна в браузере, в котором открыт сторонний сайт. Сайт этот против, чтобы его показывали по фреймах и запрещает доступ через JavaScript, выдает такие ошибки...
    Брать его через Curl тоже не получается, так как там капча.
    Самое обидное, что я его открываю и вижу на экране своего компа. Мне просто нужно как-то программно прочитать его контент.
    Должно же быть какое-то решение, в т.ч самое кривое.


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