Профиль пользователя заблокирован сроком с 4 февраля 2022 г. и навсегда по причине: необходима проверка личности владельца аккаунта (в соответствии с п.2.6 условий пользовательского Соглашения)
  • Почему при сортировке 1 меньше, чем true?

    @galaxy
    Они равны (в том смысле, что 1-true == 0 и true-1 == 0).
    Сортировка в JS, вообще говоря, не stable, так что в отсортированном массиве они могут идти в любом порядке.

    [2,5,true,1].sort((a,b) => a-b)
    // [true, 1, 2, 5]
    Ответ написан
    2 комментария
  • Почему при сортировке 1 меньше, чем true?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    При приведении типов (во время операции вычитания) true приводится к 1. Эти два значения равны, и в результирующем массиве они следуют в том же порядке. что и в исходном. Можете проверить, поменяв true и 1 местами.
    Ответ написан
    Комментировать
  • Лучший способ изучения Vue?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Правильный: читать документацию и желатьло хорошую книжку и делать тестовые проекты. По времени вы потратите примерно 2-3 месяца
    2. Как обычно: Володя заэстимейти проект! Это срочно! О классно, только вместо ангуляра используем реакт, в остольном клиент согласен. И вот несешься по эстимейту по ходу изучая реакт. Ну а потом читаешь то что пропустил.

    В общем берите книгу и реальный проект. Желательно с VUEX авторизацией роутером и что то сложнее TODO
    Ответ написан
    4 комментария
  • Как можно отрисовать кривую безье через массив с точками?

    twobomb
    @twobomb
    Сложно. Ну что-то наговнокодил.
    Кликай по канвас чтобы ставить точки.
    Пример без анимации
    Ну и пример с анимацией
    Ответ написан
    Комментировать
  • Как посчитать среднее значение данных в массиве?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const average = arr => arr.reduce((acc, n) => acc + n, 0) / arr.length;
    const extractValues = (group, item, key) => item[key].forEach(n => ((group.values[n.id] ||= { id: n.id, name: n.name })[key] ||= []).push(n.value));
    
    const result = Object
      .values(arr
        .flatMap(n => n.properties.groups)
        .reduce((acc, n) => (
          acc[n.id] ||= {
            id: n.id,
            name: n.name,
            wellBeing: [],
            values: {},
          },
          acc[n.id].wellBeing.push(n['well-being']),
          extractValues(acc[n.id], n, 'needs'),
          extractValues(acc[n.id], n, 'provision'),
          acc
        ), {}))
      .map(n => ({
        id: n.id,
        name: n.name,
        value: average(n.wellBeing),
        values: Object.values(n.values).map(m => (
          m.needs = average(m.needs),
          m.provision = average(m.provision),
          m
        ))
      }));
    Ответ написан
    5 комментариев
  • Как избавиться от множественного повторения forEach?

    @lolzqq
    HTML,CSS,JS,PHP
    godsplane, на своём опыте столкнулся с тем, что назначать, к примеру прослушиватели события click() на 250 элементов при загрузке страницы - это подвешивать её на 10-15 секунд в небытие
    Подвешивайте событие на <body>, а в обработчик передаёте нажатый элемент, распознаёте его, и, если был нажат нужный элемент - то делаете что-то дальше - фактически вешается один прослушиватель, никаких подвисонов, лагов и forEach для этого.

    Код, типа такого:
    document.querySelector('body').addEventListener('click', function(e) {
       // e.target кликабельный элемент
       // определяем, необходимый ли это эелемент
       if(e.target && (e.target.className.search('needed-element')!== -1){
          // тут работаем дальше с e.target или чем хотите
       }
    }


    P.S. при зажатии ЛКМ на кнопке Открывать - попап сворачивается, а если отпустить ЛКМ - снова разворачивается. Это баг или фича?
    Ответ написан
    6 комментариев
  • Как удалить массив в массиве по конкретному значению?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Используем array_filter:
    <?php
    $results = [
    	['order_id' => 'first', 'id'=>1],
    	['order_id' => 'second', 'id'=>4],
    	['order_id' => 'third', 'id'=>7]
    ];
    
    $filtered = array_filter(
    	$results,
    	function($el) {
    		return $el['id'] != 4;
    	}
    );
    
    var_export($filtered);


    Share PHP code
    Ответ написан
    Комментировать
  • Как в одной строчке уместить вычисление и надпись?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Console.WriteLine($"Площадь вашего круга!  {pi * (Math.Pow(x, 2))});
    Ответ написан
  • Как десериализовать xml с последующим заполнением textbox?

    FoggyFinder
    @FoggyFinder
    У вас xml не соответствует классу.

    0) Нет закрывающего тега (полагаю, это опечатка)
    1) В xml описывает вложенный элемент radiostation тогда как в классах этого типа нет
    2) name это аттрибут, а вы пытаетесь десериализовать как элемент.

    В таких случаях проще не писать классы самому а использовать сервисы, такие как Xml2Csharp

    Вставляем xml, получаем

    [XmlRoot(ElementName = "radiostation")]
    public class Radiostation
    {
        [XmlElement(ElementName = "country")]
        public string Country { get; set; }
        [XmlElement(ElementName = "genre")]
        public string Genre { get; set; }
        [XmlElement(ElementName = "subgenre")]
        public string Subgenre { get; set; }
        [XmlElement(ElementName = "title")]
        public string Title { get; set; }
        [XmlElement(ElementName = "urlwww")]
        public string Urlwww { get; set; }
        [XmlElement(ElementName = "ico")]
        public string Ico { get; set; }
        [XmlAttribute(AttributeName = "name")]
        public string Name { get; set; }
    }
    
    [XmlRoot(ElementName = "users")]
    public class Users
    {
        [XmlElement(ElementName = "radiostation")]
        public Radiostation Radiostation { get; set; }
    }


    Ответ написан на предположении что менять структуру классов допустимо, если это не так то уточните этот момент в комментариях.

    Также небольшое замечание относительно метода LoadFile: вы в нем совсем не используете параметр filePath
    Ответ написан
    Комментировать
  • Как импортировать таблицу Excel в C#?

    FoggyFinder
    @FoggyFinder
    Существует множество библиотек для работы с Excel. Что из них выбрать зависит от задачи (например, нужно только читать данные или нужно формировать полноценный отчет, со стилями и так далее).

    Судя по описанию, здесь вам нужно только чтение, причем с поддержкой устаревшего формата xls, поэтому рекомендую библиотеку ExcelDataReader

    Если у вас .Net Core приложение не забудьте добавить строку

    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


    А теперь пример.

    1. В C# не принято для классов использовать публичные поля, поэтому перепишем их на свойства

    public class Questions
    {
        public string Question { get; set; }
        public string Theme { get; set; }
        public string Description { get; set; }
        public string QuestionEn { get; set; }
        public string DescrEn { get; set; }
    }


    2. Само чтение

    const string FilePath = "sample.xls";
    var qs = new List<Questions>();
    
    using var stream = File.Open(FilePath, FileMode.Open, FileAccess.Read);
    using var reader = ExcelReaderFactory.CreateReader(stream);
    do
    {
        while (reader.Read())
        {
            var question = reader.GetString(0);
            var theme = reader.GetString(1);
            var description = reader.GetString(2);
    
            qs.Add(new Questions()
            {
                Question = question,
                Theme = theme,
                Description = description
            });
        }
    } while (reader.NextResult());


    3. Выводим результат

    foreach(var q in qs)
    {
        Console.WriteLine($"{q.Question}");
        Console.WriteLine($"{q.Theme}");
        Console.WriteLine($"{q.Description}");
        Console.WriteLine(new string('-', Console.WindowWidth));
    }


    4. Запускаем, проверяем

    Индейцы в знак примирения хлопали в ладоши
    history
    Они закапывали топор войны
    ----------------------------------------------------------------------------------------------------
    Моряки пропитывали свою одежду смолой, чтобы она не рвалась
    history
    Чтобы она не пропускала воду
    ----------------------------------------------------------------------------------------------------
    Ответ написан
    1 комментарий
  • Альтернатива sockets.io в дотнете?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ответ написан
    Комментировать
  • Почему не работает алгоритм?

    @Wisdou
    Вот решение за O(n^2), можно сделать за O(n*logn) с помощью сортировки или за O(n) если массив уже отсортирован
    public static int NextId(int[] ids)
    		{
    			for (int i = 0; i < ids.Length; i++)
    			{
    				if (Array.IndexOf(ids, i) == -1)
    				{
    					return i;
    				}
    			}
    			return ids.Length;
    		}
    Ответ написан
    Комментировать
  • Как такое сверстать?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот здесь, например, делал когда-то такую вещь (блок "Этапы создания корпоративного сайта").

    605df09f637c9864487824.jpeg

    Идея, вкратце:
    1. Элементы размещаете просто в сетку с помощью inline-block/float/flex/grid - как привычнее.
    2. Родителю задаёте относительное позиционирование, в него помещаете абсолютный элемент на всю ширину/высоту с небольшим запасом, на котором будете рисовать SVG.
    3. Как нарисуется - на js считаете ключевые точки (координаты), через которые нужно провести линии.
    4. Динамически рисуете SVG по вашим ключевым точкам.
      О том, какие варианты вообще есть, можно почитать на MDN, например.
      Выглядеть это будет примерно так:

      605df0b0256ca826129561.jpeg

      В вашем случае рекомендую использовать кривые Безье. Здесь мне нужно было сделать полукруг, поэтому я использовал дуги, у вас же просто статичная величина закругления.
    5. На ресайз окна считаете ключевые точки заново и перерисовываете SVG.
    6. Опционально заморачиваетесь и добавляете сверху ещё один путь, который по скроллу будет "заполняться"


    Это в целом чёрная магия, можно полдня убить, но красиво :)
    Если это всё очень сложно, то просто картинкой вставьте, высоту элементов фиксируйте, и меняйте картинку для адаптивных вариантов.

    Готовых вариантов тут в общем-то вы вряд ли найдёте, нужно взять и разработать.
    У меня была идея оформить это в какую-то библиотеку, но как и все остальные идеи - и ныне лежит в туду-листе на 60+ пунктов. :)
    Ответ написан
    12 комментариев
  • Как такое сверстать?

    RAX7
    @RAX7
    Держи, немного поправил один из своих старых набросков.

    Принцип работы примерно, как описал Максим Морев в своем ответе.
    Ответ написан
    2 комментария
  • Написать функцию, которая принимает строку и выводит статистику о ней: количество букв, количество цифр и количество других знаков?

    @mexvod
    const str = "sdfASfsAFgbd1232b3b2j3b5b23hb5";
        const sumNumbers = str.match(/\d+/g).join('').length;
        const sumLetters = str.match(/[a-z]/gi).join('').length;
        console.log(sumNumbers, sumLetters);
    Ответ написан
    1 комментарий
  • Как разбить массив на части?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const splitArr = (arr, chunks) =>
      Array.from(
        { length: chunks },
        (_, c) => arr.filter((n, i) => i % chunks === c)
      );

    или

    const splitArr = (arr, chunks) =>
      arr.reduce((acc, n, i) => (
        (acc[i % chunks] = acc[i % chunks] || []).push(n),
        acc
      ), []);
    Ответ написан
    Комментировать
  • Как написать функцию которая возвращает все комбинации, меняя одну цифру в строке?

    @abberati
    frontend-разработчик
    const fn = string =>
      Array.from({ length: string.length }, (_, i) =>
        Array.from({ length: 10 }, (_, j) => string.slice(0, i) + j + string.slice(i + 1))
      ).flat()
    Ответ написан
    Комментировать
  • Как написать функцию которая возвращает все комбинации, меняя одну цифру в строке?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const xxx = ([...str]) => [...new Set(Array.from(
      { length: str.length * 10 },
      (n, i) => str.map((m, j) => (j === (i / 10 | 0)) ? i % 10 : m).join('')
    ))];
    Ответ написан
    Комментировать
  • Как проверить есть ли элемент в массиве?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    После сплита создаёте лист потом делаете цикл от 0 до длины полученного массива, внутри цикла проверяете значение на валидность если валидно то в лист добавляете его если нет то 0 после цикла вызываете метод ToArray() на листе.
    Ответ написан
    Комментировать