Добавить объект JavaScript в объект JavaScript
У меня есть проблема с созданием массива объектов 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 ответ(ов)
В вашем коде вы создаете массив jsonIssues
, который затем наполняете объектами. Чтобы добавить больше объектов в этот массив с помощью метода push
, вы можете сделать это следующим образом:
var jsonIssues = []; // новый массив
jsonIssues.push({ ID: 1, "Name": "whatever" });
// добавляем еще несколько объектов
jsonIssues.push({ ID: 2, "Name": "example" });
jsonIssues.push({ ID: 3, "Name": "test" });
Таким образом, вы можете продолжать использовать метод push
, чтобы добавлять в массив столько объектов, сколько вам нужно. Если у вас есть другие вопросы или требуется дополнительная помощь, не стесняйтесь спрашивать!
В вашем случае, когда первый объект является нативным объектом JavaScript (используемым как список объектов), метод push
не сработал, но я решил эту проблему, добавив новый ключ следующим образом:
MyObjList['newKey'] = obj;
Кроме того, может быть полезно знать, как удалить тот же объект, который был вставлен ранее:
delete MyObjList['newKey'][id];
Надеюсь, это поможет кому-то, как это помогло мне.
Если вы хотите добавить элемент в массив, вы можете сделать это следующим образом:
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
обычно считается более читаемым и предпочтительным для добавления элементов в массив.
Для слияния объектов в jQuery используются метод $.extend()
. Если вам нужно рекурсивно объединить object2
в object1
, вы можете использовать первую форму этого метода с параметром true
. Вот как это выглядит:
// Рекурсивно объединяем object2 в object1
$.extend(true, object1, object2);
В этом случае все вложенные объекты также будут объединены, и если они содержат одинаковые ключи, значения из object2
заменят значения из object1
.
Если же вам нужно выполнить простое слияние без рекурсии, достаточно вызвать $.extend()
без первого аргумента:
// Объединяем object2 в object1
$.extend(object1, object2);
В этом случае будет производиться поверхностное копирование, и только свойства верхнего уровня, совпадающие в обоих объектах, будут заменены.
Используйте ссылку на официальную документацию jQuery для получения дополнительной информации: jQuery.extend().
Если это не массив объектов, вы можете сделать следующее:
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
.
Преобразование объекта JS в строку JSON
Как проверить наличие ключа в объекте JavaScript?
Как удалить все дубликаты из массива объектов?
Как получить подмножество свойств объекта JavaScript?
Какова разница между `throw new Error` и `throw someObject`?