Задать вопрос
@generate
...

Как превратить данные input в массив js?

Драстите имеется такие input поля:
<input type="text" name="season[1][name]" value="1 season">
<input type="text" name="season[1][series][1][name]" value="1 seria">
<input type="text" name="season[1][series][2][name]" value="2 seria">
<input type="text" name="season[1][series][3][name]" value="3 seria">

<input type="text" name="season[2][name]" value="2 season">
<input type="text" name="season[2][series][1][name]" value="1 seria">
<input type="text" name="season[2][series][2][name]" value="2 seria">
<input type="text" name="season[2][series][3][name]" value="3 seria">


Как из этого сделать такой объект для json ?
season: {
    1: {
		name: "1 season",
		series: {
			1: {
				name: "1 seria",
			}
			2: {
				name: "2 seria",
			}
			3: {
				name: "3 seria",
			}
		}
	},
    2: {
		name: "2 season",
		series: {
			1: {
				name: "1 seria",
			}
			2: {
				name: "2 seria",
			}
			3: {
				name: "3 seria",
			}
		}
	}
}
  • Вопрос задан
  • 240 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const data = Array.prototype.reduce.call(
  document.querySelectorAll('input'),
  (acc, n) => {
    const keys = n.name.match(/\w+/g);
    const key = keys.pop();
    keys.reduce((p, c) => p[c] ??= {}, acc)[key] = n.value;
    return acc;
  },
  {}
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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