创建一个对象,其中包含多个不同时存在的键



如何创建包含多个不存在的键的嵌套对象?而不是一个一个地创建。

例如:

const state = {};
state [a][b][c] = 5;

如何代替:

state[a] = {};
state[a][b]={};
state[a][b][c] = 5;

我想这样做,因为state[a][b]中可能有其他键,我不想删除它们。我只想更改c键。但是如果没有其他键,那么像这样创建它。

所以state也可以是:

state {
a: {
b: {
x: 20,
}
}
}

你不能那样做。唯一的方法是创建一个循环,然后逐一赋值:

function set(state, path, value) {
var pList = path.split('.');
var len = pList.length;
for (var i = 0; i < len - 1; i++) {
var elem = pList[i];
if (!state[elem]) state[elem] = {}
state = state[elem];
}
state[pList[len - 1]] = value;
return state;
}
const state = {};
set(state, 'a.b.c', 5);
console.log(state);

可以这样使用hasOwnProperty:

if (!state.hasOwnProperty(a)) state[a] = {};
if (!state[a].hasOwnProperty(b)) state[a][b] = {};
if (!state[a][b].hasOwnProperty(c)) state[a][b][c] = {};
state[a][b][c] = 5;

这对吗?

const obj =  { "a" : { "b" : { "c" : 5 } } };
console.log( obj.a.b.c );

相关内容

  • 没有找到相关文章

最新更新