Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从普通数组创建多维数组_Javascript_Html_Json_Multidimensional Array - Fatal编程技术网

Javascript 如何从普通数组创建多维数组

Javascript 如何从普通数组创建多维数组,javascript,html,json,multidimensional-array,Javascript,Html,Json,Multidimensional Array,在表单提交之后,我有一个json数组,使用formSerialize函数如下 [ {"name":"client_management-testmonitoring","value":"0"}, {"name":"client_operations-testmonitoring","value":"0"}, {"name":"tpl_management-testmonitoring","value":"0"}, {"name":"tpl_oper

在表单提交之后,我有一个json数组,使用formSerialize函数如下

[
      {"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);
}
var formData=$('#'+reportType).serializeArray(),matrix_array=[];
对于(var u=0;u

但是我没有得到预期的结果。请帮助某人解决此问题

您可以用减号分割名称,并将第一部分用作内部对象的
角色名称
,第二部分用作内部对象的
报告名称
属性

var data=[{name:“client_management-testmonitoring”,value:0},{name:“client_operations-testmonitoring”,value:0},{name:“tpl_management-testmonitoring”,value:0},{name:“channel_partner-testmonitoring”,value:0},{name:“operator testmonitoring”,value:0},{name:“金融家测试监控”,值:0},{name:“客户管理-测试监控2”,值:0},{name:“客户操作-测试监控2”,值:0},{name:“tpl管理-测试监控2”,值:0},{name:“tpl操作-测试监控2”,值:0},{name:“渠道合作伙伴-测试监控2”,值:0},{name:“操作员-测试-测试-监控2”,值:0},{name:“金融家-测试-监控2”,值:0},{name:“客户-管理-测试-监控3”,值:0},{name:“客户-操作-测试-监控3”,值:0},{name:“tpl-测试-监控3”,值:0},{name:“tpl-操作-测试-监控3”,值:0},{name:“渠道(合作伙伴)测试(监控)测试(监控)测试(监控)测试(监控)测试(监控)测试(监控)测试(监控)测试(监控)测试,
结果=数据.reduce(函数(散列){
返回函数(r,a){
var parts=a.name.split('-');
如果(!散列[parts[0]]){
散列[parts[0]]={};
r[0].role.push({role\u name:parts[0],report\u name:[hash[parts[0]]]});
}
如果(!parts[1]。匹配(/\d$/){
第[1]部分=‘测试_监控_1’;
}
散列[parts[0]][parts[1]]=a.value;
返回r;
}
}(Object.create(null)),[{report_name:“monitoring”,role:[]}]);
console.log(结果);

作为控制台包装{max height:100%!important;top:0;}
请添加想要的结果。{“角色”:[{role\u name:“客户管理”,报告名称:[{test\u monitoring\u 1:1,test\u monitoring\u 2:1,test\u monitoring\u 3:0}]},{“角色”:[{角色名称:“金融家”,报告名称:[{test_monitoring_1:1,test_monitoring_2:0,test_monitoring_3:1}]}编辑问题并将结果添加到那里。正确设置问题的格式,它可以帮助我们解决问题@SoumyaSarasando如果没有给出数字,您需要名称后面的问题
test\u monitoring\u 1:
?我还需要一个帮助。我需要使用节点js将此数组插入mongodb。它没有正确插入。$.ajax({type:post”,url:“/insert/”+id,数据类型:“json”,数据:结果,成功:函数(res){});我正在使用代码插入我不知道mongo和jquery。你可以看看这里:你可以问一个关于mongodb问题的新问题。我还需要一个帮助[{“report_name”:“monitoring”角色“:[{”角色名称“:”客户机管理“,”参数名称“:[{”监控“:”0“,”测试监控“:”2“:”0“,”测试监控“:”3“:”0“,”,{”角色名称“:”客户机操作“,”参数名称“:[{”监控“:”0“,”测试监控“:”2“:”0“,”测试监控“:”3“:”0“,”,{”角色名称“:”操作员“,”参数名称“:”监控“:”0“,”测试监控“:”2“:”0“,”test_monitoring_3:“0”}],:[{“role_name:“financiator”,“parameter_name:[{“monitoring:“0”,“test_monitoring_2:“0”,“test_monitoring_3:“0”}]}]我需要这样的数组。