0

Добавить объект JavaScript в объект JavaScript

12

У меня есть проблема с созданием массива объектов JavaScript внутри другого объекта JavaScript. Я хотел бы, чтобы структура выглядела так:

Issues:

  - {"ID" : "1", "Name" : "Отсутствие документации", "Notes" : "Заметки по вопросу 1"}
  - {"ID" : "2", "Name" : "Ошибка в программном обеспечении", "Notes" : "Заметки по вопросу 2, и т.д."}
  - {"ID" : "3", "Name" : "Система не готова", "Notes" : "Заметки по вопросу 3, и т.д."}
  // и так далее...

Я хочу, чтобы "Issues" содержал каждую из этих объектов JavaScript, чтобы я мог обращаться к ним как, например, Issues[0].Name или Issues[2].ID и т.д.

Я создал внешний объект Issues:

var jsonIssues = {};

Дошел до того момента, когда мне нужно добавить к нему объект JavaScript, но не знаю, как это сделать. Я хотел бы иметь возможность делать что-то вроде этого:

Issues<код сюда>.Name = "Отсутствие документации";
Issues<код сюда>.ID = "1";
Issues<код сюда>.Notes = "Заметки, заметки заметки";

Есть ли какой-нибудь способ сделать это? Спасибо.

UPDATE: Согласно полученным ответам, я объявил массив и добавляю объекты JavaScript по мере необходимости:

var jsonArray_Issues = new Array();

jsonArray_Issues.push({ "ID" : id, "Name" : name, "Notes" : notes });

Спасибо за ответы.

5 ответ(ов)

0

В вашем коде вы создаете массив jsonIssues, который затем наполняете объектами. Чтобы добавить больше объектов в этот массив с помощью метода push, вы можете сделать это следующим образом:

var jsonIssues = []; // новый массив
jsonIssues.push({ ID: 1, "Name": "whatever" });
// добавляем еще несколько объектов
jsonIssues.push({ ID: 2, "Name": "example" });
jsonIssues.push({ ID: 3, "Name": "test" });

Таким образом, вы можете продолжать использовать метод push, чтобы добавлять в массив столько объектов, сколько вам нужно. Если у вас есть другие вопросы или требуется дополнительная помощь, не стесняйтесь спрашивать!

0

В вашем случае, когда первый объект является нативным объектом JavaScript (используемым как список объектов), метод push не сработал, но я решил эту проблему, добавив новый ключ следующим образом:

MyObjList['newKey'] = obj;

Кроме того, может быть полезно знать, как удалить тот же объект, который был вставлен ранее:

delete MyObjList['newKey'][id];

Надеюсь, это поможет кому-то, как это помогло мне.

0

Если вы хотите добавить элемент в массив, вы можете сделать это следующим образом:

jsonIssues[jsonIssues.length] = {ID:'3',Name:'Some name 3',Notes:'NOTES 3'};

Также вы можете использовать метод push, который предложил другой участник. Это тоже отличный способ:

jsonIssues.push({ID:'3',Name:'Some name 3',Notes:'NOTES 3'});

Оба варианта работают, но метод push обычно считается более читаемым и предпочтительным для добавления элементов в массив.

0

Для слияния объектов в jQuery используются метод $.extend(). Если вам нужно рекурсивно объединить object2 в object1, вы можете использовать первую форму этого метода с параметром true. Вот как это выглядит:

// Рекурсивно объединяем object2 в object1
$.extend(true, object1, object2);

В этом случае все вложенные объекты также будут объединены, и если они содержат одинаковые ключи, значения из object2 заменят значения из object1.

Если же вам нужно выполнить простое слияние без рекурсии, достаточно вызвать $.extend() без первого аргумента:

// Объединяем object2 в object1
$.extend(object1, object2);

В этом случае будет производиться поверхностное копирование, и только свойства верхнего уровня, совпадающие в обоих объектах, будут заменены.

Используйте ссылку на официальную документацию jQuery для получения дополнительной информации: jQuery.extend().

0

Если это не массив объектов, вы можете сделать следующее:

let student = {
  name: 'Mr. Anderson',
  id: 35
}

student['grade'] = 10; // добавляем свойство grade

Результат будет следующим:

student = {
  name: 'Mr. Anderson',
  id: 35,
  grade: 10
}

Вы также можете добавить объект:

let student = {
  personalData: {
    // ключ-значение личных данных
  }
}

let academicData = {
  // ключ-значение академических данных
}

student['academicData'] = academicData;

Результат будет таким:

student = {
  personalData: {},
  academicData: {}
}

Таким образом, вы можете динамически добавлять свойства и объекты в ваш объект student.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь