Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что делает эта команда в консоли?

Glitch Ученик (131), закрыт 2 недели назад
document.cookie
.split("; ")
.map(el => el.split("="))
.filter(el => el[0].includes("mp"))
.map(u => JSON.parse(decodeURIComponent(u[1])).tokenData)
.map(d => d.userHash + ";" + d.token)[0]
Лучший ответ
Дима Милевский Знаток (431) 1 месяц назад
Эта команда в консоли работает с cookies, которые хранятся в браузере. Сначала она получает все cookies и разбивает их на отдельные пары ключ-значение. Затем фильтрует только те cookies, ключи которых содержат "mp". После этого она декодирует значения этих cookies, парсит их как JSON и извлекает данные о пользователе, такие как `userHash` и `token`. В конце команда формирует строку из этих данных и возвращает только первую найденную строку. Если таких cookies нет, то результат будет пустым.
ivan866_zПросветленный (22051) 1 месяц назад
нейросеть все верно понимает, благодаря тому что это каскад очень простых команд, благодаря тому что все линейно и примитивно по своему назначению
Дима Милевский Знаток (431) ivan866_z, это да
Остальные ответы
ivan866_z Просветленный (22051) 1 месяц назад
это каскадный ("пайп") вызов методов на языке JavaScript
document.cookie
 берет основной ствол XML-контента из интернет-страницы (document tree) и обращается к ветке "куки" 

.split("; ")
 использует точку с запятой как разделитель между нодами 

.map(el => el.split("="))
 выполняет картирующую функцию над каждым элементом, возвращая массив
каждый элемент дробится с использованием символа "равно" как разделителя

.filter(el => el[0].includes("mp"))
 вызывает другую картирующую функцию, на этот раз фильтр
возвращаются только элементы, нулевой член которых содержит буквенную последовательность "mp"

.map(u => JSON.parse(decodeURIComponent(u[1])).tokenData)
 над результатом предыдущей функции, поэлементно, член с названием "tokenData" переводится из формата URI в текстовый вид, а он форматируется в валидный JSON-блок 

.map(d => d.userHash + ";" + d.token)[0]
 над результатом предыдущей функции производятся следующие действия
берется поле с названием "userHash" из JSON-блока, соединяются с точкой с запятой, а потом - с полем "token"
Андрей Высший разум (481899) 1 месяц назад
  1. Разбиваем строку, содержащую куки, на массив отдельных кук; разделитель "; ".
  2. Каждую куку разбиваем на имя куки и значение куки; разделитель "=".
  3. Оставляем только куки, в имени которых есть "mp".
  4. Декодируем значение кук как JSON-строки и из получившихся объектов берём значения поля "tokenData".
  5. Из объектов, взятых из "tokenData" берём поля "userHash" и "token" и склеиваем их в одну строку, разделяя символом ";".
  6. Из получившегося в результате массива строк берём элемент с индексом 0.

Другими словами, берём первую куку, в имени которой есть "mp", преобразуем значение этой куки (строка в формате JSON) в объект JavaScript (назовём его obj) и формируем строку:
 obj.tokenData.userHash + ";" + obj.tokenData.token 

P.S. Решение, мягко говоря, неоптимальное, зато полностью в функциональном стиле.
Похожие вопросы