我使用以下代码
创建一个JSON对象var config = {"config": {
"example": false,
"example2": true,
}
};
我想有条件地在配置对象的中间添加(或不添加)某些值。我尝试了以下方法:
var additionalconfig = "";
if(additionalconfig){
additionalConfig = {"additional1":true,
"additional2":2};
}
var config = {"config": {
"example": false,
additionalConfig,
"example2": true,
}
};
我添加了额外的配置作为额外的节点(列表?),这不是我想要的。我的预期结果是:
"config": {
"example": false,
"additional1":true,
"additional2":2
"example2": true,
}
我尝试使用additionalconfig[0]
删除该节点,但收到错误Unexpected token [
。比我尝试将其添加为字符串
additionalConfig = '"additional1":true,
"additional2":2';
但我也有错误。你知道它是否有可能实现这个目标,如果是的话怎么样?我需要将配置添加到一个确切的位置,而不仅仅是合并两个对象
答案 0 :(得分:1)
您无法在Javascript Object
的中间添加其他属性,您可以做的就是可以在Object
的开头或末尾附加属性。
var config = {
"config": {
"example": false,
"example2": true,
}
};
var additionalConfig = {
"additional1": true,
"additional2": 2
};
var config1 = config;
//post-append
config = { ...config,
config: { ...config.config,
...additionalConfig
}
}
console.log(config);
//pre-append
config1 = { ...config1,
config: { ...additionalConfig,
...config1.config
}
}
console.log(config1);
答案 1 :(得分:0)
您可以使用Object.assign(....)
轻松完成。
检查以下示例:
var config = {
"config": {
"example": false,
"example2": true,
}
};
var additionalconfig = true; // lets add the additional config.
if (additionalconfig) {
additionalConfig = {
"additional1": true,
"additional2": 2
};
} else {
additionalConfig = {};
}
config.config = Object.assign(config.config, additionalConfig);
console.log(config)
答案 2 :(得分:0)
var config = {
"example": false,
"example2": true
};
additionalConfig = {"additional1":true,
"additional2":2};
var newConfig = {};
for(var e in config){
if(e === "example2"){
for (var o in additionalConfig){
newConfig[o] = additionalConfig[o];
};
}
newConfig[e] = config[e];
}
config = Object.assign(newConfig);
{example:false,additional1:true,additional2:2,example2:true}