Знайте, когда использовать второй и третий аргументы
Если вы разработчик Javascript, вы, вероятно, используете JSON.stringify()
ежедневно. Обычно вы помещаете объект в JSON.stringify()
в качестве первого аргумента, и вуаля, вы получаете желаемую строку JSON. Но жизнь не всегда так проста. Иногда вам нужно преобразовать объект, и здесь вам пригодятся следующие аргументы этой функции.
В этой статье вы получите все, что вам нужно знать о том, как и когда вы должны использовать второй и третий аргументы JSON.stringify()
, чтобы в некоторых случаях вы могли облегчить себе жизнь.
Основное использование
JSON.stringify()
используется для преобразования объекта Javascript в строку JSON.
Однако иногда существуют свойства, которые не могут быть легко преобразованы в строку JSON. Речь идет в основном о Map
,WeakMap
, Set
,WeakSet
и Error
. Посмотрите на пример:
Наш набор приводит к пустому объекту в JSON!
Другое дело, что иногда вы можете захотеть опустить некоторые свойства объекта или преобразовать их перед тем, как превратить в JSON.
Вот где второй аргумент вступает в игру.
Второй аргумент
Второй аргумент JSON.stingify()
называется заменителем. Используется для исключения некоторых свойств или их преобразования (замены). Вы можете указать там массив или функцию.
Множество
Массив — ваш лучший друг, когда вы хотите преобразовать только подмножество свойств в JSON. Использование прямолинейно:
В JSON вы увидите только те свойства, которые перечислены в массиве (name
и age
). Другие будут опущены (password
).
Функция
Аргумент функции полезен, когда вы хотите применить определенное преобразование к свойствам объекта или отфильтровать их в соответствии с пользовательскими правилами. Лучше всего пояснить на примере:
В данной функции преобразования мы делаем две вещи:
- Преобразование
Set
в массив значений, чтобыuniqueSnacksEatenToday
больше не было пустым в результирующем JSON. - Замена
age
текстом в соответствии с правилом в операторе if.
Зачем использовать второй аргумент для преобразования объекта, когда можно просто создать новый объект с преобразованиями, а затем отправить его на
JSON.stringify()
?
Ответ прост — все ради производительности. Вам не нужно создавать новый объект и перебирать старый объект больше раз, чем необходимо, при использовании функции преобразования. При работе с маленькими объектами неважно, но прирост производительности может стоить того, когда объекты большие.
Третий аргумент
Третий аргумент используется для определения интервала внутри JSON. Аргумент может быть либо числом, либо строкой.
Я не вижу большого количества вариантов его использования, но вы никогда не узнаете, какую проблему вам нужно будет решить в своей жизни, и, возможно, эта информация вас спасет!
…Или вы можете просто покрасоваться на вечеринка ботаников.
Число
Если третьим аргументом является число, результирующая строка будет иметь количество пробелов, эквивалентное предоставленному числу:
Это может быть полезно при отображении объектов с console.log()
, где интервал повышает читабельность.
Примечание. Самая высокая связь равна 10, а все, что выше, будет сокращено до 10.
Нить
Строка в качестве третьего аргумента используется для преобразования пробелов в настраиваемые символы. Предоставленная вами строка будет использоваться в качестве интервала внутри JSON:
Зачем это кому-то нужно? Без понятия.
Заключительные заметки
Полезно знать некоторые приемы, которые можно проделывать с такими хорошо известными функциями, как Json.stringify()
. Это небольшой шаг, который сделает вас более знающим разработчиком Javascript. Чем больше у вас инструментов, тем больше уникальных подходов к решению проблемы вы можете придумать. Но лично мне просто нравится исследовать бесконечные возможности мира JS.