javascript - 如何在 Javascript/Jquery 中动态创建多维对象

标签 javascript jquery

所以我有这个初始数据,我想根据将其转换为多维对象,

var Data = {
    "1": "Hi 1",
    "1.1": "Hi 1.1",
    "1.1.1": "Hi 1.1.1",
    "2": "Hi 2",
    "2.1": "Hi 2.1",
    "2.2": "Hi 2.2",
    "3": "Hi 3",
}

1 包含 1.1

1.1 包含 1.1.1

2 包含 2.12.2

例如,我的预期结果:

NewData = {
    "1": {
        "Text": "Hi 1",
        "1": {
            "Text": "Hi 1.1",
            "1": {
                "Text": "Hi 1.1.1",
            },
        }, 
    },
    "2": {
        "Text": "Hi 2",
        "1": {
            "Text": "Hi 2.1",
        },
        "2": {
            "Text": "Hi 2.2",
        },
    },
    "3": {
        "Text": "Hi 3",
    },
}

我尝试过的:

var NewData = {};
$.each(Data, function(key, value) {
    var splitted = key.split(".");

    $.each(splitted , function(key2, value2) {

        // Stuck here
        // How to make multidimensional object in Javascript dynamically.

    });
});

最佳答案

您可以减少嵌套对象的路径并分配 Text 属性。

const
    data = { "1": "Hi 1", "1.1": "Hi 1.1", "1.1.1": "Hi 1.1.1", "2": "Hi 2", "2.1": "Hi 2.1", "2.2": "Hi 2.2", "3": "Hi 3" },
    tree = Object
        .entries(data)
        .reduce((r, [path, text]) => {
            path
                .split('.')
                .reduce((o, k) => o[k] ??= {}, r)
                .Text = text;
                
            return r;
        }, {});

console.log(tree);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 Javascript/Jquery 中动态创建多维对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74558467/

相关文章:

jquery - Bootstrap Affix 固定标题后 100px 使内容跳转

javascript - 在 jQuery 中,当您处于each() 的范围内时,如何解析 "this"的范围?

javascript - 显示和隐藏元素列表

javascript - AngularJS:页面加载时使用服务器数据更改输入值

javascript - 多个循环和推送到数组的问题

javascript - Angular : ngView and functions not working right away?

jquery - 如何使用 Jquery 的 Coolinput 在密码字段中显示提示 "Enter your password",然后在用户键入时使用星号隐藏输入?

java - 如果文本框处于焦点状态,则禁用 jQuery 事件

javascript - 正则表达式查找并用 gulp/node 替换并在替换中使用查找字符串的一部分?

javascript - 如何存储从 localStorage 中的 $resource 检索到的值?