function hierarchy(items, type) {
const hierarchy = new Map();
items.forEach(item => {
const classes = item ? Array.isArray(item['Classes of irresponsible AI use'])
? item['Classes of irresponsible AI use']
: [item['Classes of irresponsible AI use']] : [];
classes.forEach(classKey => {
if (!hierarchy.has(classKey)) {
hierarchy.set(classKey, new Map());
}
const classMap = hierarchy.get(classKey);
if (item['Subclasses'] && item['Subclasses'][classKey]) {
const subclassArray = item['Subclasses'][classKey];
subclassArray.forEach(subclassItem => {
if (!classMap.has(subclassItem)) {
classMap.set(subclassItem, new Map());
}
const subclassMap = classMap.get(subclassItem);
if (type === 'zeroShot' && item['Sub-subclasses'] && item['Sub-subclasses'][subclassItem]) {
const subsubclassArray = item['Sub-subclasses'][subclassItem];
subsubclassArray.forEach(subsubclassItem => {
if (!subclassMap.has(subsubclassItem)) {
subclassMap.set(subsubclassItem, []);
}
});
} else if (type === 'zeroShotRules' && item['Sub-subclass'] && item['Sub-subclass'][classKey] && item['Sub-subclass'][classKey][subclassItem]) {
const subsubclassArray = item['Sub-subclass'][classKey][subclassItem];
subsubclassArray.forEach(subsubclassItem => {
if (!subclassMap.has(subsubclassItem)) {
subclassMap.set(subsubclassItem, []);
}
});
} else if (type === 'latest_prompt' && item['Sub-subclass'] && item['Sub-subclass'][subclassItem]) {
const subsubclassArray = item['Sub-subclass'][subclassItem];
subsubclassArray.forEach(subsubclassItem => {
if (!subclassMap.has(subsubclassItem)) {
subclassMap.set(subsubclassItem, []);
}
});
}
});
}
});
});
return hierarchy;
}