Как видоизменить массив, полученный через serializeArray()?

Пишу админ панель для сайта, продающего билеты.

41062e22912b4a7cb11fe8afba8e9194.png

Собственно человек может добавить дополнительное поле, ввести в него данные и удалить все введенные билеты. Эту форму я собираю через serializeArray() для дальнейшей обработки.

При сборе данных я получаю следующий массив:
(6) [{…}, {…}, {…}, {…}, {…}, {…}]
0:{name: "row", value: "1"}
1:{name: "col", value: "2"}
2:{name: "section", value: "Бельетаж"}
3:{name: "row", value: "2"}
4:{name: "col", value: "5"}
5:{name: "section", value: "Бельетаж"}
length:6
__proto__:Array(0)


Но это не слишком удобно. Можно ли каким-то способом его быстро перевести в json вида:
[
     {
        "1" : {"row": "1" ,"col": "2", "section": "Бельетаж"}
     },
     {
        "2" : {"row": "1" ,"col": "2", "section": "Бельетаж"}
     }
]
?
То есть что бы кол-во новых объектов было {N полученных объектов}/ 3 и в каждый новый такой элемент записывалось по 3 элемента?
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
var arr= [
	{name: "row", value: "1"},
	{name: "col", value: "2"},
	{name: "section", value: "Бельетаж"},
	{name: "row", value: "2"},
	{name: "col", value: "5"},
	{name: "section", value: "Бельетаж"}
], arrJSON= {}, n=1;

arr.forEach(function(i) {
	arrJSON[n]= arrJSON[n] || {};
	if (arrJSON[n][i.name]) {
		n++; 
		arrJSON[n]= {};
		arrJSON[n][i.name]= i.value
		return;
	}
	arrJSON[n][i.name]= i.value;
})


console.log(arrJSON);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Recosh
@Recosh
Программист студент
Я использую вот так атрибут name, а бэкенд (PHP) эт разбирает на многомерный массив.
7f34c6cec890452e854a700efe58dfee.png

А можно на on submit повесить свой сборщик данных в цикле
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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