如何创建包含多个不存在的键的嵌套对象?而不是一个一个地创建。
例如:
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 );