Задать вопрос
  • Как преобразовать json в map?

    NeiroNx
    @NeiroNx
    Программист
    a = {
      "room": {
        "80-c4-48-84-79": " Federal research and production center ",
        "73-b3-49-af-9d": " dgru",
        "04-d2-45-86-6a": "Main",
        "d0-51-41-bf-4f": " Publications",
        "c5-3c-4d-83-4f": " news",
        "7d-ae-46-a0-25": "Contacts",
        "8f-01-4b-81-4e": "Certification center",
        "56-32-40-82-1a": "1959",
        "27-63-47-b9-1c": "2019",
        "a7-34-46-b8-38": " Moscow",
        "42-29-4c-bb-df": " text",
        "67-8b-47-b1-34": "example"
      }
    }
    d = new Map(Object.keys(a.room).map(x=>[x, a.room[x]]))


    либо пишите рекурсивную функцию если нужно пройтись по вложенным объектам:
    var remap = x=>new Map(Object.keys(x).map(y=>[y,(typeof(x[y])=="object")?remap(x[y]):x[y]]))
    Ответ написан
    Комментировать
  • Как отсортировать табличные значения?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Сделаем объект, где ключами будут имена типов данных, а значениями - функции сравнения значений соответствующих типов:

    const sort = {
      number: (a, b) => a - b,
      string: (a, b) => a.localeCompare(b),
    };

    Функция сортировки - принимает таблицу (может быть передана в виде элемента или селектора) и индекс столбца, по значениям которого надо отсортировать строки. По индексу столбца стучимся в его заголовок, получаем из него имя типа данных, по имени типа извлекаем функцию сравнения. Из тела таблицы достаём строки, превращаем их в массив, сортируем, добавляем обратно:

    function sortTable(table, colIndex) {
      if (typeof table === 'string') {
        table = document.querySelector(table);
      }
    
      const head = table.tHead.rows[0];
      const compare = sort[head.cells[colIndex].dataset.type] ?? sort.string;
      const value = row => row.cells[colIndex].innerText;
      const tbody = table.tBodies[0];
    
      tbody.append(...[...tbody.rows].sort((a, b) => compare(value(a), value(b))));
      [...head.cells].forEach((n, i) => n.classList.toggle('sorted', i == colIndex));
    }

    Стилизуем заголовок столбца, по которому выполнена сортировка:

    .sorted {
      background: #ccc;
    }
    .sorted::after {
      content: " \2193";
    }

    Всё, можно пользоваться:

    // просто дёргаем сортировку
    sortTable('#grid', 0);
    sortTable(document.querySelector('table'), 1);
    
    // или, сортируем по клику на заголовки столбцов
    document.querySelectorAll('#grid th').forEach(function(n) {
      n.addEventListener('click', this);
    }, ({ target: t }) => sortTable(t.closest('table'), t.cellIndex));
    Ответ написан
    Комментировать
  • Как при открытии страницы с хешем в конце #reviews прогрузить её на определенном блоке reviews?

    hzzzzl
    @hzzzzl
    а на определенном блоке

    начать этот блок с тэга <a name="reviews"></a>, текст внутри "ссылки"-якоря по ходу не обязателен, можно оставить пустой невидимый в браузере тэг

    Ответ написан
    Комментировать
  • Как переписать данный код на foreach?

    JamesHatfield
    @JamesHatfield
    Front-end developer
    forEach это метод массива, а где здесь массивы?
    Ответ написан
    Комментировать
  • Как удалить класс при клике на другой элемент?

    @Steppp
    html классы писать с маленькой буквы через - разделять слова
    js все переменные начинаются с маленькой буквы слова слитно начиная с большой буквы. Как в html классы
    const list = document.querySelectorAll('.CatalogMenu li a')
     list.forEach(item =>{ 
            item.addEventListener('click', (e) =>{
            list.forEach(el=>{ el.classList.remove('active'); });
            item.classList.add('active')
        })
    })
    Ответ написан
    7 комментариев
  • Export/Import не могу оперировать данными в косоли. Что делать?

    strangerintheq
    @strangerintheq
    z = z*z + с
    И не должны, в глобальной области видимости не определено свойства time, у Вас же модули, область видимости модуля остается внутри модуля.

    Если очень хочется Вы можете добавить ссылку на объект в глобальный скоуп руками:

    window.time = time;
    Ответ написан
    4 комментария