首页 > 解决方案 > 分组键值对象

问题描述

我有一个对象数组(下面的 pre_finalTab_new ),如下所示:

在此处输入图像描述

我的目标是按“模式”对它们进行分组,然后按“提示”将它们插入到新数组中,如下所示:

 var celotnaTabela = {};
 for (var nov in pre_finalTab_new)
  {
      var shema = pre_finalTab_new[nov].schema.trim();
      var objekt_tip = pre_finalTab_new[nov].type.trim();
      var objekt_name = pre_finalTab_new[nov].name.trim();
      var tip =  pre_finalTab_new[nov].tip.trim();
 
      if (celotnaTabela[shema] === undefined)
      {
          celotnaTabela[shema] = [];
          if (celotnaTabela[shema][tip] === undefined)
          {
              celotnaTabela[shema][tip] = [];
              if (celotnaTabela[shema][tip][objekt_tip] === undefined)
              {
                  celotnaTabela[shema][tip][objekt_tip] = [];
                  celotnaTabela[shema][tip][objekt_tip] = [objekt_name];
 
              } else
                  celotnaTabela[shema][tip][objekt_tip].push(objekt_name);
          }
      } else
      {
          if (celotnaTabela[shema][tip] === undefined)
          {
              celotnaTabela[shema][tip] = [];
          }
          if (celotnaTabela[shema][tip][objekt_tip] === undefined)
          {
              celotnaTabela[shema][tip][objekt_tip] = [];
              celotnaTabela[shema][tip][objekt_tip] = [objekt_name];
 
          } else
          {
              if (!celotnaTabela[shema][tip][objekt_tip].includes(objekt_name))
                  celotnaTabela[shema][tip][objekt_tip].push(objekt_name);
          }
 
      }
  }

然后,如果我输出 celotnaTabela,我得到了这个:

在此处输入图像描述

扩展:

在此处输入图像描述

更:

在此处输入图像描述

但问题是,当我尝试使用 JSON.stringify(celotnaTabela) 时,我得到了这个:

{"HR":[],"ZOKI":[]}

但我需要它采用正确的格式,所以我可以将此对象传递给 AJAX 调用..

谁能帮我解决这个问题,我做错了什么?

标签: javascriptjqueryajax

解决方案


我希望我理解你所要求的一切。下次请在 textform 中提供测试数据和希望的结果。

var obj = [
    { schema: "HR", type: " PACKAGE", name: "PAKET1", tip: "new_objects" },
    { schema: "HR", type: " PACKAGE", name: "PAKET2", tip: "new_objects" },
    { schema: "HR", type: " PROCEDURE", name: "ADD_JOB_HISTORY", tip: "new_objects" },
    { schema: "ZOKI", type: " TABLE", name: "TABELA2", tip: "new_objects" },
    { schema: "ZOKI", type: " TABLE", name: "TABELA3", tip: "new_objects" },
];

var out = {};
for (var i = 0, v; v = obj[i]; i++) {
    var a = v.schema.trim();
    var b = v.type.trim();
    var c = v.tip.trim();
    var d = v.name.trim();
    if (!out.hasOwnProperty(a)) {
        out[a] = {};
    }
    if (!out[a].hasOwnProperty(b)) {
        out[a][b] = {};
    }
    if (!out[a][b].hasOwnProperty(c)) {
        out[a][b][c] = []
    }
    out[a][b][c].push(d);
}
console.log(JSON.stringify(out, null, 2));


推荐阅读