2 回答

TA贡献1829条经验 获得超4个赞
我的猜测是你正在寻找
if (typeof object[keyy] != "obect")
而不是
if (typeof object[keyy] == "undefined")
它不会检测到当前是属性值的字符串。
当然调用set(obj, "hello.world.again", "hello again")
会导致{"hello": {"world": {"again": "hello again"}}}
,不会{"hello": {"world": {"again": "test"}}}
。

TA贡献1884条经验 获得超4个赞
我发现您的逻辑需要一个 JSON 对象但接收字符串值,它需要修改一点或设置像这样的值{again: 'hello again'}。
我试着简单地写下这个set 方法,它可能对某人有帮助!
function set(obj, key, value) {
let keys = key.split('.');
if(keys.length<2){ obj[key] = value; return obj; }
let lastKey = keys.pop();
let fun = `obj.${keys.join('.')} = {${lastKey}: '${value}'};`;
return new Function(fun)();
}
var obj = {
"hello": {
"world": "test"
}
};
set(obj, "hello.world.again", 'hello again'); // Value should be object here
console.log(obj);
set(obj, "hello.world.again.onece_again", 'hello once again');
console.log(obj);
添加回答
举报