К примеру есть строка вида
'test[test2][test3]'
Как с помощью javascript распарсить ее в JSON вида
{
"test": {
"test2": {
"test3": null
}
}
}
?
При этом количество уровней может отличаться и заранее неизвестно.
Нашел пример на jQuery, хотелось бы на чистом js, к примеру 6 версии (или какая там сейчас актуальна)
Для решения, можно воспользоваться следующим подходом: получить все имена свойств в виде массива, свернуть получившийся массив в объект.
Для получения имен свойств можно использовать регулярное выражение и метод match
str.match(/\w+/g)
Данное выражение вернет массив названий в порядке следования:
["test", "test2", "test3"]
Далее этот массив можно свернуть с помощью функции reduceRight
Данная функции проходит массив начиная с последнего элемента.
Вызов может быть следующим:
.reduceRight((acc,cur)=>({[cur]:acc}),null)
В качестве начального значения указывается null, это будет значение самого вложенного элемента.
Сама функция возвращает объект с одним свойством, имя которого находится в параметре cur, в который передается текущий элемент массива, значением свойства устанавливается объект полученный на предыдущем шаге.
Пример:
console.log('test[test2][test3]'
.match(/\w+/g)
.reduceRight((acc, cur) => ({
[cur]: acc
}), null));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости