@Nyppy

Как сериализовать html форму?

Как мне сериализовать форму с необычной структурой объектов?
<input name='users[123][name]'/>
выходит получить пока только так:
{
...
'users[123][name]': value_input,
...
}

Подскажите как распарсить такую структуру в это:
users: {
123: {
name: value_input
}
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@yarnstart
Превозмогание и React
const serialize = (form) => {
  const obj = {};
	const inputs = [...form.querySelectorAll('input')];
  inputs.forEach((input) => {
    const params = input.name.match(/(?<=\[)\S+?(?=\])|^\S+?(?=\[)/g);
    const value = input.value;
    
    params.reduce((current, param, i, arr) => {
      if (!obj[param]) current[param] = {};
      if (i === arr.length - 1) current[param] = value;
      
      return current[param];
    }, obj);
  });
  
  return obj;
};




  1. Тут я новый синтаксис использовал в regexp, чтобы не вырезать скобки, если у вас есть необходимость - можете переписать его
  2. Я сделал на тупую querySelector('input'), конечно ещё может быть textarea как минимум
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Софт для автоматизации
Простого способа как вы хотите сделать нет, нужно писать парсер, который будет разбирать имена и создавать объекты.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы