我正在尝试创建一个 JavaScript 对象并动态定义其子对象。因此,子项是动态的,它们可能在运行时发生变化。
我有什么? var _obj = {};
下一步,我想使用函数在运行时设置一些变量。我找不到有效的解决方法来实现以下功能:
setObjValue("spaceA.spaceB.id", 1);
节省1
在以下路径中:
_obj.spaceA.spaceB.id = 1;
我尝试根据.
分割 key ,然后使用循环逐步创建路径。但是,由于我们在 JavaScript 中没有引用,因此不可能实现这一点。
换句话说,如何创建一个函数来按照以下模式添加对象?
_obj["spaceA"]["spaceB"]....["id"] = 1;
- 运行前未定义根步骤数。所以我不能手动使用代码。我需要像上面的示例函数一样动态地实现这一点。
最佳答案
试试这个:
function setObjValue(object, path, value) {
var pathArray = path.split('.');
for(var i = 0; i < pathArray.length; i++) {
var name = pathArray[i];
if(i == pathArray.length-1) {
object[name] = value;
} else {
if(!(name in object)) object[name] = {};
object = object[name];
}
}
return;
}
var obj = {};
setObjValue(obj, "test1.test2.sub", "123");
console.log(obj);
关于javascript - 如何动态添加子项到JavaScript对象(JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169856/