向具有可变内容的键的现有对象添加新值?

时间:2020-02-14 12:25:01

标签: javascript object

我有一个对象“ unit”,其键是不同的团队。团队的关键是员工。每个员工都是具有自己字段的对象。我遍历一些文件,获取每个员工对象。获得员工对象后,我想将其放入单位对象内的适当团队中。例如:

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 个答案:

答案 0 :(得分:2)

一种实现方法如下。使用unit[teamname] = {};,您可以在键teamname下保存一个空对象。然后,在键RichTom

下向该对象添加单个元素

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);

答案 1 :(得分:2)

假设您有

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 :(得分:0)

如果您不想/不能更改indivindiv2结构,则可以通过这种方式进行。

从indiv2获取密钥:

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

获取值:

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

现在您可以这样做:

unit[teamname][key] = values

答案 3 :(得分:0)

您想要Object destructuring

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);