К примеру есть строка вида
'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));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Мне нужно сделать калькулятор для рассчёта стоимости видеороликаЕсть такой код:
Здравствуйте, нужно получить историю платежей Киви, при помощи APIСделано все, кроме сортировки по времени, здесь я не могу понять
Здравствуйте, уважаемые коллеги!