如何从普通的数组创建多维数组。

3
我使用formSerialize函数提交表单后,得到了一个json数组,就像这样:
[
      {"name":"client_management-testmonitoring","value":"0"},
      {"name":"client_operations-testmonitoring","value":"0"},
      {"name":"tpl_management-testmonitoring","value":"0"},
      {"name":"tpl_operations-testmonitoring","value":"0"},
      {"name":"channel_partner-testmonitoring","value":"0"},
      {"name":"operator-testmonitoring","value":"0"},
      {"name":"financier-testmonitoring","value":"0"},
      {"name":"client_management-test_monitoring_2","value":"0"},
      {"name":"client_operations-test_monitoring_2","value":"0"},
      {"name":"tpl_management-test_monitoring_2","value":"0"},
      {"name":"tpl_operations-test_monitoring_2","value":"0"},
      {"name":"channel_partner-test_monitoring_2","value":"0"},
      {"name":"operator-test_monitoring_2","value":"0"},
      {"name":"financier-test_monitoring_2","value":"0"},
      {"name":"client_management-test_monitoring_3","value":"0"},
      {"name":"client_operations-test_monitoring_3","value":"0"},
      {"name":"tpl_management-test_monitoring_3","value":"0"},
      {"name":"tpl_operations-test_monitoring_3","value":"0"},
      {"name":"channel_partner-test_monitoring_3","value":"0"},
      {"name":"operator-test_monitoring_3","value":"0"},
      {"name":"financier-test_monitoring_3","value":"0"}
]

我需要将这个数组转换成这样:

[
    {
        "role": [
            {
                "role_name": "client_management",
                "report_name": [
                    {
                        "test_monitoring_1": 1,
                        "test_monitoring_2": 1,
                        "test_monitoring_3": 0
                    }
                ]
            }
        ]
    },
    {
        "role": [
            {
                "role_name": "financier",
                "report_name": [
                    {
                        "test_monitoring_1": 1,
                        "test_monitoring_2": 0,
                        "test_monitoring_3": 1
                    }
                ]
            }
        ]
    }
] 

我正在尝试使用这段代码获取多维数组。

var formData = $('#' + reportType).serializeArray(),matrix_array =[];


for (var u = 0; u < formData.length; u++) {


    for (var user in formData[u])
    {
        if (user == 'name') {
            var matrix_name_n = formData[u][user],
                    matrix_name_a = matrix_name_n.split('-'),
                    role_name = matrix_name_a[0],
                    parameter_name = matrix_name_a[1];
            var matrix_array_2 = [];
        }
        if (user == 'value') {
            var matrix_param_value = formData[u][user], matrix_array_3 = [matrix_param_value];
        }

    }
    var matrix_array2 = {};
    var matrix_array2 = {};
    matrix_array2["role"] = role_name;
    matrix_array2[parameter_name] = matrix_param_value;

    matrix_array_2.push(matrix_array2);
    matrix_array.push(matrix_array_2);
    var insert_matrix = {};
    insert_matrix = JSON.stringify(formData);
}

但我没有得到预期的结果。请有人帮忙解决这个问题。

Original text: "Python is a high-level programming language widely used in data science and machine learning."Translated text: Python是一种高级编程语言,广泛用于数据科学和机器学习。Wanted result: Python是一种高级编程语言,被广泛应用于数据科学和机器学习。 - Nina Scholz
{ "role" : [{ role_name:"客户管理", report_name:[{ 测试监控_1:1, 测试监控_2:1, 测试监控_3:0 }] }] }, { "role" : [{ role_name:"金融家", report_name:[{ 测试监控_1:1, 测试监控_2:0, 测试监控_3:1 }] }] } - Soumya Sarasan
编辑问题并将结果添加到那里。正确格式化您的问题,这有助于我们解决问题 @SoumyaSarasan - Soubhik Mondal
如果没有给出数字,您需要名称后面的那个吗?例如 test_monitoring_1: - Nina Scholz
1个回答

3
您可以通过减号将名称拆分,并使用第一部分作为内部对象的role_name属性,使用第二部分作为report_name属性。

var data = [{ name: "client_management-testmonitoring", value: 0 }, { name: "client_operations-testmonitoring", value: 0 }, { name: "tpl_management-testmonitoring", value: 0 }, { name: "tpl_operations-testmonitoring", value: 0 }, { name: "channel_partner-testmonitoring", value: 0 }, { name: "operator-testmonitoring", value: 0 }, { name: "financier-testmonitoring", value: 0 }, { name: "client_management-test_monitoring_2", value: 0 }, { name: "client_operations-test_monitoring_2", value: 0 }, { name: "tpl_management-test_monitoring_2", value: 0 }, { name: "tpl_operations-test_monitoring_2", value: 0 }, { name: "channel_partner-test_monitoring_2", value: 0 }, { name: "operator-test_monitoring_2", value: 0 }, { name: "financier-test_monitoring_2", value: 0 }, { name: "client_management-test_monitoring_3", value: 0 }, { name: "client_operations-test_monitoring_3", value: 0 }, { name: "tpl_management-test_monitoring_3", value: 0 }, { name: "tpl_operations-test_monitoring_3", value: 0 }, { name: "channel_partner-test_monitoring_3", value: 0 }, { name: "operator-test_monitoring_3", value: 0 }, { name: "financier-test_monitoring_3", value: 0 }],
    result = data.reduce(function (hash) {
        return function (r, a) {
            var parts = a.name.split('-');
            if (!hash[parts[0]]) {
                hash[parts[0]] = {};
                r[0].role.push({ role_name: parts[0], report_name: [hash[parts[0]]] });
            }
            if (!parts[1].match(/\d$/)) {
                parts[1] = 'test_monitoring_1';
            }
            hash[parts[0]][parts[1]] = a.value;
            return r;
        }
    }(Object.create(null)), [{ report_name: "monitoring", role: [] }]);

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


我还需要一个帮助。 我需要使用node js将此数组插入到mongodb中。 但是它没有正确插入。$.ajax({ type:“post”, url:“/insert /”+ id, dataType:“json”, data:result, success:function(res){ } });我正在使用这段代码进行插入。 - Soumya Sarasan
我对Mongo和jQuery一无所知。 - Nina Scholz
你可以在这里查看:http://stackoverflow.com/help/someone-answers,并且你可以提出一个关于mongodb问题的新问题。 - Nina Scholz
我需要再多一个帮助。 - Soumya Sarasan
[{"report_name":"监控", "role":[{"role_name":"客户管理","parameter_name":[{"监控":"0","测试监控2":"0","测试监控3":"0"}]}, {"role_name":"客户运营","parameter_name":[{"监控":"0","测试监控2":"0","测试监控3":"0"}]}], {"role_name":"操作员","parameter_name":[{"监控":"0","测试监控2":"0","测试监控3":"0"}]}, [{"role_name":"财务人员","parameter_name":[{"监控":"0","测试监控2":"0","测试监控3":"0"}]}]}] 我需要一个像这样的数组。 - Soumya Sarasan
它正在工作。但需要一些重新排列,如上述的数组。 - Soumya Sarasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接