如何从javascript中的平面文件创建分层层次结构?
我正在尝试基于当前平面数据集创建分层数据集。所以我需要的是:如何从javascript中的平面文件创建分层层次结构?,javascript,arrays,loops,hierarchy,Javascript,Arrays,Loops,Hierarchy,我正在尝试基于当前平面数据集创建分层数据集。所以我需要的是: [0…99] 0:对象 类型:“喜剧-音乐剧” 工作室:“派拉蒙” 标题“泰坦尼克号” 1:对象 类型:“喜剧-音乐剧” 工作室:“布埃纳维斯塔” 标题“怪物公司” 2:对象 诸如此类 我想要这个: 0:对象 类型:“喜剧-音乐剧” 工作室:“派拉蒙” 标题:“泰坦尼克号” 标题:“另一个标题” 工作室:“布埃纳维斯塔” 标题:“怪物公司” 我想不出一个方法来实现这一点。我只得到了2层的层次结构,但
- [0…99]
- 0:对象
- 类型:“喜剧-音乐剧”
- 工作室:“派拉蒙”
- 标题“泰坦尼克号”
- 1:对象
- 类型:“喜剧-音乐剧”
- 工作室:“布埃纳维斯塔”
- 标题“怪物公司”
- 2:对象
- 0:对象
- 0:对象
- 类型:“喜剧-音乐剧”
- 工作室:“派拉蒙”
- 标题:“泰坦尼克号”
- 标题:“另一个标题”
- 工作室:“布埃纳维斯塔”
- 标题:“怪物公司”
- 工作室:“派拉蒙”
- 类型:“喜剧-音乐剧”
function formatObjectToTreeStructure(data, filterName) {
var filterList = [], allFilterList = [], constructedObject = [];
data.children = data.data;
for (var key in data.children[0]) {
allFilterList.push(key);
}
for (var index = 0; index < data.children.length; index++) {
var temp = null;
var filterIndex = filterList.indexOf(data.children[index][filterName]);
if (filterIndex == -1) {
filterList.push(data.children[index][filterName]);
temp = {};
temp[filterName] = data.children[index][filterName];
temp.children = [];
var tempChildren = {};
tempChildren[data.dataTableAlign.group1] = data.children[index][data.dataTableAlign.group1];
tempChildren[data.dataTableAlign.group2] = data.children[index][data.dataTableAlign.group2];
tempChildren[data.dataTableAlign.group3] = data.children[index][data.dataTableAlign.group3];
temp.children.push(tempChildren);
constructedObject.push(temp);
} else {
var tempChildren = {};
tempChildren[data.dataTableAlign.group1] = data.children[index][data.dataTableAlign.group1];
tempChildren[data.dataTableAlign.group2] = data.children[index][data.dataTableAlign.group2];
tempChildren[data.dataTableAlign.group3] = data.children[index][data.dataTableAlign.group3];
constructedObject[filterIndex].children.push(tempChildren);
}
}
return constructedObject;
}
函数格式ObjectToTreeStructure(数据、筛选器名称){
var filterList=[],allFilterList=[],constructedObject=[];
data.children=data.data;
for(数据中的var键。子项[0]){
所有过滤器列表。按下(键);
}
对于(var index=0;index
但这是我所能做到的。不过,它只有两个层次。我有流派和儿童题材,但我似乎不知道如何获得同一工作室的所有标题。也许你可以这样做
功能波纹(数据){
返回数据。减少((t,o)=>{
t[o.genre]?t[o.genre][o.studio]?t[o.genre][o.studio]。推送(o.title)
:t[o.genre][o.studio]=[o.title]
:t[o.genre]={[o.studio]:[o.title]};
返回t;
},{});
}
var list=[{类型:“喜剧”,工作室:“性病A”,标题:“电影01”},
{类型:“喜剧”,工作室:“Std_B”,标题:“Movie_02”},
{体裁:“西部”,工作室:“Std_A”,标题:“Movie_03”},
{类型:“惊悚片”,工作室:“Std_A”,标题:“Movie_04”},
{类型:“动作”,工作室:“Std_C”,标题:“Movie_05”},
{类型:“惊悚片”,工作室:“Std_C”,标题:“Movie_06”},
{类型:“西部”,工作室:“Std_B”,标题:“Movie_09”},
{类型:“惊悚片”,工作室:“Std_B”,标题:“Movie_10”},
{类型:“动作”,工作室:“性病A”,标题:“电影11”},
{类型:“西部”,工作室:“Std_D”,标题:“电影12”},
{类型:“喜剧”,工作室:“性病”,标题:“电影13”},
{类型:“动作”,工作室:“性病C”,标题:“电影14”},
{类型:“西部”,工作室:“Std_D”,标题:“电影15”},
{类型:“惊悚片”,工作室:“Std_A”,标题:“Movie_16}];
log(JSON.stringify(corrugate(list),null,4))代码>到目前为止您尝试了什么?StackOverflow不是一个“为我编写代码”的网站。我编辑了这个问题