Сообщество любителей самого популярного языка программирования в мире. Публикация вакансий: @javascript_jobs Чаты: @frontend_ru @css_ru Каналы: @defront @frontendnoteschannel Флуд: @javascript_ru_flood Важно! http://nometa.xyz и http://neprivet.ru
Ну тогда всё как я говорил ранее (или такой вариант) + JSON.stringify()
(если нужна наглядность для дебага)
const obj = { k2: 'v2', k1: 'v1'}Читать полностью…
const objSorted = {}
Array
.from(Object.keys(obj))
.sort()
.forEach(k =>
objSorted[k] = obj[k]
)
JSON.stringify(objSorted)
А, т.е. запрос с клиента на сервер даже не формируется, если набор аргументов, составляющих данные запроса (которые могут быть в объекте со случайным порядком свойств) уже есть в кэше. А кэш всё-таки хранится в виде какой-то мапы ключ-значение. И вот этот ключ (по сути всё тот же хэш, квази- или полностью уникальный) нужно вычислять так, чтобы для объектов { k2: 'v2', k1: 'v1' }
и { k1: 'v1', k2: 'v2' }
он был одинаковым. Верно?
Если так, то моё первоначальное предположение по поводу конечной цели остаётся верным: нужно вычислить хэш объекта с параметрами для запроса.
cache key
у реквеста есть параметры, по ним создается кэш ключ, для SWR (Stale-while-revalidate)
Уверен, что для вычисления хэша объектов есть 100% рабочие решения, которые не требуют двойных преобразований объектов. В т.ч. не требуют сериализации в JSON
Читать полностью…правда, собирать объект заново через Object.fromEntries
как будто бы не очень оптимально, я бы возвращал строки из .map'а, а потом их join'ил
@warning_bva можете пояснить своё недовольство? Интересно же
Читать полностью…вроде бы, это костыль для обратной совместимости с доисторическими временами, когда в ЖСе не было отдельных массисов, и их роль выполняли объекты
Читать полностью…как это нет? есть. просто ключи-числа >=0 идут первыми и по порядку. остальные — в порядке создания
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
The traversal order, as of modern ECMAScript specification, is well-defined and consistent across implementations. Within each component of the prototype chain, all non-negative integer keys (those that can be array indices) will be traversed first in ascending order by value, then other string keys in ascending chronological order of property creation.Читать полностью…
да все ок начиная с ES2015 https://stackoverflow.com/a/54670669/1878180
Читать полностью…этот факт внезапно на другой реализации (или "завтра" на той же) может не сработать
Читать полностью…по факту конкретная реализация и все ок работает с кодом выше
Читать полностью…например два объекта, в каждый добавляем значения в одном порядке - на выходе объекты с одинаковой последовательностью ключей
Читать полностью…но он ведь не случайный каждый раз при создании объекта
Читать полностью…угу, ключи строковые в обычной Map'е, key => resposeData
хэш не годится, хочу видеть параметры в ключе для наглядности/дебага
нет, URL параметры могу быть в любой последовательности
ключ формируется по аргументам функции (массив или объект примитивных значений) выполняющей запрос на сервер
Я верно понял, что Вам для возможности кэширования при формировании запроса важно, чтобы URL
всегда был /ep?k1=v1&k2=v2
,
а не /ep?k2=v2&k1=v1
, например?
ой, сорян, не заметил - уже "кэш", а не "хэш". Вообще теперь не понимаю. Что имеется в виду?
Читать полностью…Да, но он этого не уточнил. И я согласен, я тоже не уточнил, в каких случаях.
Тут ведь в чём вопрос - эти нюансы надо как-то помнить. Или лазить в спеку каждый раз, когда подзабыл, особенно, когда прыгаешь между ЯП. Я же придерживаюсь решения, которое гарантированно должно работать
не вижу причин, почему у автора это должно не получиться. если только он не пишет под древние браузеры
Читать полностью…например так: Array.from(Object.keys(o)).sort().map(k => [k, o[k]])
можно преобразовать объект, например, в массив, где порядок как раз гарантирован
Читать полностью…реализация может быть любой, спецификация не гарантирует порядка, я уже говорил
Читать полностью…неправильно Вы "так и делаете", ибо на выходе всё равно получится объект с непредсказуемым порядком свойств, идём по кругу
Читать полностью…