在对象的子键内分配一个键值

assign an key value inside a sub key in object

我有一个对象:

let names = { field1: 'ton', field2: null }  // or field3 does not exist

我需要根据名称对象中的变量元素插入到

field='field2'
relative='brotherage'
names[field][relative] =  30;  // has no effect in my code, why ?

得到这个:

 { field1: 'ton', field2: {brotherage: 30 } }

并使用此类代码向字段添加更多元素:

field='field2'
relative='cousinage'
names[field][relative] =  20;  // has no effect in my code, why ?

得到这个:

 { field1: 'ton', field2: {brotherage: 30, cousingage: 30 } }

什么是最好的方法或为什么我失败了...我尝试了很多东西但我迷路了...

用空对象初始化您的 field2 字段:

let names = { field1: 'ton', field2: {} }

如果 属性 具有虚假值或不存在,您可以使用默认对象。

var names = { field1: 'ton', field2: null },
    field = 'field2',
    field1 = 'field3', 
    relative = 'brotherage';
    relative1 = 'inlaw';
    
names[field] = names[field] || {};
names[field][relative] =  30;

names[field1] = names[field1] || {};
names[field1][relative1] =  40;

console.log(names);

// has no effect in my code, why ?

因为 names[ "field2" ]null 而您的代码被错误输出为

Uncaught TypeError: Cannot set property 'brotherage' of null

你需要先让它成为一个对象

names[field] = names[field] || {}; 
names[field][relative] =  30; 

您必须先用空对象初始化 names[field] :

let names = { field1: 'ton', field2: {} }

field='field2'
relative='brotherage'
names[field][relative] = 30

field='field2'
relative='cousinage'
names[field][relative] = 20

console.log(names)