Добавить новое значение в существующий объект с переменным содержимым в качестве ключа? - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть объект «юнит», ключи которого - разные команды. Ключи команд - сотрудники. Каждый сотрудник - это объект со своими полями. Я перебираю некоторые файлы, получаю каждый объект сотрудника Как только я получу объект сотрудника, я хочу поместить его в соответствующую команду внутри объекта подразделения. Например:

var indiv = {'Rich':{'a':3,'b':4,'c':5}};
var teamname = "TeamA";
var unit = {};
unit[teamname] = indiv;

//[object Object] {
//   TeamA: [object Object] {
//     Rich: [object Object] { ... }
//   }
// }

Теперь, как я могу добавить следующий элемент к этому объекту?

var indiv2 = {'Tom':{'a':6,'b':8,'c':10}};

Чтобы получить результат:

// [object Object] {
//   TeamA: [object Object] {
//     Rich: [object Object] { ... },
//     Tom: [object Object] { ... }
//   }
// }

Любой ключи? Является ли единственная опция, превращающая TeamA в массив объектов?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 14 февраля 2020

Если у вас есть

const indiv = {'Rich':{'a':3,'b':4,'c':5}}
const indiv2 = {'Tom':{'a':6,'b':8,'c':10}}

Вы можете использовать Object.assign

const indiv = {'Rich':{'a':3,'b':4,'c':5}}
const indiv2 = {'Tom':{'a':6,'b':8,'c':10}}
const unit = { teamA: {} }
Object.assign(unit.teamA, indiv)
console.log(unit.teamA)
Object.assign(unit.teamA, indiv2)
console.log(unit.teamA)
2 голосов
/ 14 февраля 2020

Один из способов сделать это, как показано ниже. С помощью unit[teamname] = {}; вы сохраняете пустой объект под ключом teamname. Затем вы добавляете отдельные элементы к этому объекту под клавишами Rich и Tom

var rich = {'a':3,'b':4,'c':5}
var tom = {'a':6,'b':8,'c':10}
var name1 = "Rich"
var name2 = "Tom"
var unit = {};
var teamname = "TeamA";
unit[teamname] = {};
unit[teamname][name1] = rich;
unit[teamname][name2] = tom;
console.log(unit);
0 голосов
/ 14 февраля 2020

Вы хотите Разрушение объекта

const both = {'Rich':{'a':3,'b':4,'c':5},'Tom':{'a':6,'b':8,'c':10}};
const teamName = "TeamA";
let unit = { [teamName] : {} };
unit[teamName] = {...both}
console.log(unit);

По одному:

const persons = [
  { 'Rich':{'a':3,'b':4,'c':5} },
  { 'Tom':{'a':6,'b':8,'c':10} }
];

const teamName = "TeamA"
let unit = { [teamName]: {} };

persons.forEach(person => unit[teamName] = { ...unit[teamName], ...person })
console.log(unit);
0 голосов
/ 14 февраля 2020

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

Получить ключ от индивидуа2:

let key = Object.keys(indiv2)[0]

Получить значения:

let values = Object.values(indiv2)[0]

И теперь вы можете сделать это так:

unit[teamname][key] = values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...