gpt4 book ai didi

javascript - JS : Dynamically create subproperties of non-existing property

转载 作者:行者123 更新时间:2023-11-28 20:39:15 25 4
gpt4 key购买 nike

我想要这样的东西:

var myObj = {};
myObj["a"]["b"].push({"c":"d"});

我希望 myObj 成为: {"a":{"b":[{"c":"d"}]}} 但出现错误

Cannot set property 'b' of undefined

是的,我知道我可以像这样一步一步地创建它:

var myObj={};
myObj["a"]={};
myObj["a"]["b"]=[];
myObj["a"]["b"].push({"c":"d"});

但是如果 myObj 已经有一些结构并且我不想破坏它怎么办?例如:

var myObj={"a":{"e":"f"}};

如果我写 myObj["a"]={}; 我会丢失数据。
当然我可以写

if(myObj["a"]==null){
myObj["a"]={}
}

但是它太笨重了!如果我可以像 myObj["a"]["b"].push({"c":"d"}); 这样编写而不在每一步检查 null ,那就太好了.
有什么建议如何做到这一点?可能有一种方法可以覆盖 JS 原生对象或类似的东西?
预先感谢您!

最佳答案

恐怕不可能像这样覆盖 JS 的原生功能。

您必须检查子属性。

如果您想确保对象上存在某个属性而不覆盖它,请执行以下操作:

myObj['a'] = myObj['a'] || {};

如果 myObj['a'] 有值,则将其设置为自身;如果没有值,则设置为新的空对象。

然后对 myObj['a']['b'] 执行相同操作,然后推送到该位置:

myObj['a']['b'] = myObj['a']['b'] || [];
myObj['a']['b'].push({"c":"d"});

关于javascript - JS : Dynamically create subproperties of non-existing property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14724591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com