【问题标题】:How to create a multidimensional array from normal array如何从普通数组创建多维数组
【发布时间】:2017-07-03 18:14:01
【问题描述】:

我在使用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);
}

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

【问题讨论】:

  • 请同时添加想要的结果。
  • { "role" : [{ role_name:"client_management", report_name:[{ test_monitoring_1:1, test_monitoring_2:1, test_monitoring_3:0 }] }] }, { "role" : [{ role_name :"金融家", report_name:[{ test_monitoring_1:1, test_monitoring_2:0, test_monitoring_3:1 }] }] }
  • 编辑问题并在那里添加结果。正确格式化您的问题,它可以帮助我们找出问题@SoumyaSarasan
  • 如果没有给出数字test_monitoring_1:,你需要名字后面的那个吗?

标签: javascript html json multidimensional-array


【解决方案1】:

您可以用减号分割名称,并将第一部分用作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; }

【讨论】:

  • 我需要更多帮助。这个数组我需要使用节点 js 插入到 mongodb。它没有正确插入。 $.ajax({ type: "post", url: "/insert/" + id, dataType: "json", data: result, success: function(res) { } });我正在使用此代码插入
  • 我不知道 mongo 和 jquery。
  • 你可以看看这里:stackoverflow.com/help/someone-answers 你可以问一个关于 mongodb 问题的新问题。
  • 我需要更多帮助
  • [{"report_name":"monitoring", "role":[{"role_name":"client_management","parameter_name":[{"monitoring":"0","test_monitoring_2": "0","test_monitoring_3":"0"}]}, {"role_name":"client_operations","parameter_name":[{"monitoring":"0","test_monitoring_2":"0","test_monitoring_3": "0"}]}], {"role_name":"operator","parameter_name":[{"monitoring":"0","test_monitoring_2":"0","test_monitoring_3":"0"}]}, ":[{"role_name":"financier","parameter_name":[{"monitoring":"0","test_monitoring_2":"0","test_monitoring_3":"0"}]}]}] 我需要一个像这样的数组。
猜你喜欢
  • 2020-12-16
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2011-11-24
  • 1970-01-01
相关资源
最近更新 更多