如何在javascript上使用动态键设置嵌套对象

Edg*_*rka 4 javascript

let foo = {};

const key1 = 'a';
const key2 = 'b';
const key3 = 'c';

foo[key1][key2][key3] = [1, 2];
Run Code Online (Sandbox Code Playgroud)

当我尝试做类似的事情时,我得到:

Uncaught TypeError: Cannot read property 'b' of undefined
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 8

您必须先创建嵌套对象,然后才能在其中创建属性。

let foo = {}

const key1 = 'a'
const key2 = 'b'
const key3 = 'c'

foo[key1] = {};
foo[key1][key2] = {};
foo[key1][key2][key3] = [1, 2];
console.log(foo);
Run Code Online (Sandbox Code Playgroud)

如果键列表是在数组中动态生成的,请参阅从数组填充嵌套对象?用于创建所有对象的函数。


Wyc*_*yck 5

您还可以使用动态键创建文字对象。只需确保在必要时创建嵌套对象,如 @Barmar 所示。

const key1 = 'a'
const key2 = 'b'
const key3 = 'c'

let foo = { [key1]: { [key2]: { [key3]: [1, 2] } } };

console.log(foo.a.b.c);
Run Code Online (Sandbox Code Playgroud)