Задать вопрос
@philphil

Как в java script представить строку вида «level1[level2][level3]» в массив/объект/map с соответственной вложенностью?

Имеется форма в которой имена полей имеют вид: "figures[1][type]" "figures[1][square_x1]" "figures[1][outlineColor]".
В php скрипт приходит массив с соответственной вложенностью:
array(1) {
  ["figures"]=>
  array(1) {
    [1]=>
    array(6) {
      ["type"]=>
      string(6) "square"
      ["square_x1"]=>
      string(1) "1"
      ["square_y1"]=>
      string(1) "1"
      ["square_x2"]=>
      string(3) "200"
      ["square_y2"]=>
      string(3) "200"
      ["outlineColor"]=>
      string(6) "purple"
    }
  }
}


Возникла необходимость валидировать форму на клиенте. Вопрос как добиться аналогичного представления данных из формы в java script?
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Придется парсить ключи в обработчике submit:
const re = /(.+)\[(.+)\]\[(.+)\]/;
const formData = new FormData(drawingForm);
const result = {};
for (const [key, value] of Object.entries(formData)) {
    const matches = key.match(re);
    if (!matches) { continue }
    const [, k1, k2, k3] = matches;
    ((result[k1] ??= {})[k2] ??= {})[k3] = value;
}
console.log(result); // тут валидация
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы