У меня есть набор объектов из нескольких источников, которые я хотел бы объединить, чтобы я мог работать с одним большим объектом вместо, скажем, 5 или 10 объектов.
Скажем, мой основной объектный массив с базовыми данными сотрудников, к которым я бы хотел добавить другие массивы, -
var employees = [
{emp_id: 1, emp_name: "John D", phone:"123456"},
{emp_id: 2, emp_name: "Mary J", phone:"234567"},
{emp_id: 3, emp_name: "Doe J", phone:"345678"},
{emp_id: 4, emp_name: "Jane M", phone:"456789"}
]
И еще один массив объектов с историей работы сотрудников:
var employee_history = [
{emp_id: 1, company: "ABC", Years: 4},
{emp_id: 2, company: "BCD", Years: 3},
{emp_id: 3, company: "CDE", Years: 2},
{emp_id: 4, company: "DEF", Years: 1}
]
И окончательный массив объектов с историей проживания сотрудников:
var cities_lived = [
{emp_id: 1, city: "Moscow", Years: 1},
{emp_id: 1, city: "Doha", Years: 1},
{emp_id: 2, city: "Cairo", Years: 2},
{emp_id: 2, city: "London", Years: 1},
{emp_id: 3, city: "Tunis", Years: 2},
{emp_id: 3, city: "Beijing", Years: 2},
{emp_id: 4, city: "New York", Years: 1},
{emp_id: 4, city: "Capetown", Years: 1}
]
Так что я бы хотел вставить employee_history
и cities_lived
в отдельные объекты внутри employees
, используя свойство emp_id
, чтобы сопоставить и получить вывод, подобный этому или что-то близкое, если он находится внутри отдельного объекта :
[
{
emp_id: 1,
emp_name: "John D",
phone: "123456",
company: "ABC",
Years: 4,
cities: [
{emp_id: 1, city: "Doha", Years: "1"},
{emp_id: 1, city: "Doha", Years: "1"}
]
},
{},
{},
...
]
Как мне этого добиться?
Мое громоздкое решение состояло в том, чтобы зациклить каждый массив объектов и создать новые объекты, в которые я бы помещал данные, а затем, наконец, помещать результаты в массив основных объектов. Но мне не нравится идея делать все это вручную, и даже тогда я не уверен, как поместить результаты в массив основных объектов, где совпадают свойства emp_id
.