javascript - 如何动态添加子项到JavaScript对象(JSON)

标签 javascript json

我正在尝试创建一个 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/

相关文章:

json - 检查值是否为 typeof struct

javascript - 如何在不接受焦点的元素上捕获键盘事件?

javascript - mocha.globals 是 "undefined"

javascript - 将draggable附加到容器jquery

javascript - 通过关注 URL 栏触发操作

php - QT5 : best efficiant way to "unserialise" array of keys/values from json result

javascript - 在另一个过渡结束后设置高度 0 px

c# - 如何使用 ASP.Net Web Api 2 进行部分响应

JSON API 过滤器包含的资源

json - 在 AWS Lambda 中使用 GoLang 解析 JSON