JavaScript Добавляет массив объектов к определенному ключу

#javascript #vue.js

Вопрос:

Я борюсь с добавлением массива объектов к существующему массиву объектов с помощью Vue.js. На самом деле я пытаюсь сделать повторитель формы в другом повторителе формы. Первое мне удалось сделать без проблем, но второе заставляет меня по-настоящему нервничать.

Я пробовал использовать функции соединения и нажатия, но это работает не так, как ожидалось.

Итак, это функция для повторителя первой формы (и она работает)

Кстати: родитель определяется как массив в состоянии.

 addParent: function () {
            this.form.parent.push({
                name: '',
                age: '',
            });
        },
 

Таким образом, результат выглядит следующим образом:

 parent: [
            {
                name: 'My name',
                age: 32,
            }
        ]
 

Поэтому в этот объект мне нужно добавить ребенка, чтобы он выглядел так:

 parent: [
            {
                name: 'My name',
                age: 32,
                child: [
                    {
                        name: 'My children',
                        school: 'Elementary'
                    }
                ]
            }
        ]
 

И я пытаюсь сделать это так:

 addChildren: function (index) {
            this.form.parent.splice([index], 0, {
                child: {
                    name: '',
                    school: '',
                }
            });
        },
 

И по какой-то причине это не работает, это добавление нового массива родительского и дочернего объекта.
И это другой способ, которым я пытался это сделать:

 addChildrenSecoundTry: function (index) {
            var dd = [];
            dd[index] = {
                    child: {
                      name: '',
                      school: '',
                  }
                };

            this.form.packages.splice([index], 0, dd);

        },
 

Но безуспешно.

Я пробовал использовать push, передавая ключ от родителя, но это всегда приводит к ошибке, что push не является функцией.

Вот пример КОДА, который я привел, чтобы прояснить свое видение.

Ответ №1:

Попробуйте распространить оригинальные ключи на новые ( child ) по заданному индексу

 addChildren: function (index) {
            this.form.parent.splice(index, 1, {
                ...this.form.parent[index],
                child: {
                    name: '',
                    school: '',
                }
            });
        },
 

Ответ №2:

Вы можете напрямую добавить массив/объект в родительский объект. Я использовал троичный ключ, чтобы проверить, существует ли «дочерний» ключ, и если да, подтолкните объект к нему, иначе создайте новый ключ с объектом внутри массива.

 addChildren: function (index) { this.form.parent[index].child =
this.form.parent[index].child ? this.form.parent[index].child.push({name: '',
school: '',}) : [ {name: '', school: '',} ], } }); },