#javascript #string #dictionary
Вопрос:
В принципе, я хочу превратить карту в строку в виде текста. Я пробовал toString()
и шаблонные литералы, но они, очевидно, возвращают [карту объектов]. Я также видел, что некоторые люди преобразовали карту в объект, а затем вызвали JSON.stringify()
его.
Однако я не хочу, чтобы моя карта отображалась как объект JSON, а как реальная карта
Предположим, у меня была карта
{ 'key' =gt; 'value' }
я хочу, чтобы он отображался так, как показано выше, а не так, как показано ниже
{ "key": "value" }
Есть ли какой-нибудь способ, которым я мог бы этого добиться?
ОБНОВЛЕНИЕ: После некоторых экспериментов я, наконец, нашел подходящий метод
const convertMapToString = (m: Maplt;string, IGuildCache | objectgt;) =gt; { let mapEntries = [...m.keys()] return '{n' mapEntries.map(k =gt; { return ' ' k ' =gt; ' JSON.stringify(m.get(k), null, 2) }).join(',n') 'n}' }
Значения карты были объектами, поэтому я не возражал против их преобразования в JSON.
Комментарии:
1. Что вы имеете в виду под дисплеем? вообще не существует способа отображения объекта в виде строки.
2. Да, есть способ добиться этого: решите, как должна выглядеть ваша карта в виде строки, а затем напишите свой собственный код, чтобы она выглядела именно так. Преобразование экземпляра карты в строку с помощью процесса, включающего
JSON.stringify()
в себя, в общем случае будет затруднено, поскольку синтаксис JSON допускает только строковые ключи.
Ответ №1:
Вам придется создавать свои собственные функции, может быть, что-то вроде :
function displayMapsWithCustomFormat(m: Map) { let asStrings = m.map((key, value) =gt; `"${key}" =gt; "${value}"`); console.log("{n" asStrings.join(",n") "}"); }
Не проверено, но вы можете попробовать. Вы можете немного усложнить, если будете использовать другие типы. Например, если у вас есть вложенная карта, сделайте эту функцию рекурсивной.
Ответ №2:
если вам нужно отобразить объект типа { ‘ключ’ =gt; ‘значение’}, а не «:» существует для ключа или значения, вы можете это сделать
let data = {'key' : 'value'} JSON.stringify(data).replace(":", " =gt; ")
Комментарии:
1. это не сработает, если какие-либо ключи или значения содержат двоеточие