我有一张带有树制品的桌子。类别,组和子组。
当您导出json时,Excel文件没有层次结构:如下例所示:
[
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 15,
"desc sub": "Bombas"
},
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 16,
"desc sub": "Cabos"
},
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 17,
"desc sub": "Helices"
},
必须生成如下文件:
[
{
"category": {
"id": 4,
"name": "Acessorios para Veiculos",
"group": [
{
"id": 1,
"name": "Acessorios Nautica",
"subgroup": [
{
"id": 15,
"name": "Bombas"
},
{
"id": 16,
"name": "Cabos"
},
{
"id": 17,
"name": "Helices"
}
]
},
{
"id": 2,
"name": "Acessorios de Carros",
"subgroup": [
{
"id": 26,
"name": "Exterior"
},
{
"id": 27,
"name": "Interior"
}
]
}
]
}
}
]
用Excel做到这一点?有人知道我可以通过我的表格格式创建文件的最佳方法吗?
答案 0 :(得分:0)
您可以使用JS对象作为哈希表来跟踪类别ID,组ID和子组ID。
我在下面提出了一个快速实现(假设初始数组中的所有项都有id_cat,id_gr和id_sub值),看看这个jsFiddle
function grouping(items) {
var catHash = {},
catList = [],
i = 0;
for (i = 0; i < items.length; i++) {
var hash = catHash[items[i]["id_cat"]] || {};
hash.groupHash = hash.groupHash || {};
var groupHash = hash.groupHash[items[i]["id_gr"]] || {};
groupHash.subgroupHash = groupHash.subgroupHash || {};
var subgroupHash = groupHash.subgroupHash[items[i]["id_sub"]] || {},
cat = hash.category || {},
group = groupHash.group || {},
subgroup = subgroupHash.subgroup || {};
if (!cat.id) {
cat.id = items[i]["id_cat"];
catList.push(cat);
hash.category = cat;
catHash[cat.id] = hash;
}
if (!cat.name) {
cat.name = items[i]["desc cat"];
}
if (!cat.group) {
cat.group = [];
}
if (!group.id) {
group.id = items[i]["id_gr"];
cat.group.push(group);
groupHash.group = group;
hash.groupHash[group.id] = groupHash;
}
if (!group.name) {
group.name = items[i]["desc gr"];
}
if (!group.subgroup) {
group.subgroup = [];
}
if (!subgroup.id) {
subgroup.id = items[i]["id_sub"];
group.subgroup.push(subgroup);
subgroupHash.subgroup = subgroup;
groupHash.subgroupHash[subgroup.id] = subgroupHash;
}
if (!subgroup.name) {
subgroup.name = items[i]["desc sub"];
}
}
return catList;
}
&#13;