javascript - 分组键值对象
问题描述
我有一个对象数组(下面的 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 调用..
谁能帮我解决这个问题,我做错了什么?
解决方案
我希望我理解你所要求的一切。下次请在 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));
推荐阅读
- swift - 快速图像选择器获取多张图片
- django - Django Rest Framework - 分页数据 URL 显示 http 而不是 https
- android - 构建aar时会放入gradle文件吗?
- c# - 如何将对象转换为通用?
- haskell - 模式匹配字段,但也有一个代表整个数据类型的变量
- java - 如何从 inputreader.read() 中读取数据?
- c# - 如何在不同 DbContext 上找到的模型之间创建关系?
- codesniffer - 包括排除规则
- php - 如何根据用户输入从数据库中获取数据并在 php 中使用异步 POST 显示为 JSON 数组
- typescript - 如何在 rxjs 6 中将“静态”可观察与“动态”合并?