,该数组是一维数组,第一层节点是parent:# 第二层根据第一层id和
第二层parent进行比较,以此类推
var arr = [
{ id: '-1', parent: '#', text: '1' },
{ id: '1', parent: '#', text: '2' },
{ id: '2', parent: '4', text: '3' },
{ id: '3', parent: '2', text: '4' },
{ id: '4', parent: '6', text: '5' }
];
console.log(sum(0, arr));
function sum(index,data) {
if(!data[index+1]) return 'no';
if(data[index].id == data[index+1].parent) return data[index+1];
return sum(index+1,data);
}
function toTree(data) {
const res = [];
const map = {};
data.forEach((item) => {
map[item.id] = item
})
data.forEach((item) => {
let parentItem = map[item.parent];
if(parentItem) {
(parentItem.children || (parentItem.children = [])).push(item)
} else {
res.push(item)
}
})
return res
}
var a:any = [{ id: 1, name: 3, pid: -1, children: [] }];
const map = new Map();
// 将所有的记录以下方便取
for (const t of a) {
map.set(t.id, t);
t.children = [];
}
// 遍历添加子元素
for (const t of a) {
if (t.pid !== -1) {
const e = map.get(t.pid);
e.children.push(e);
}
}
console.log(map);
// 从map里面去除pid为
var a = [
{ id: "-1", parent: "#", text: "1" },
{ id: "1", parent: "#", text: "2" },
{ id: "2", parent: "4", text: "3" },
{ id: "3", parent: "2", text: "4" },
{ id: "4", parent: "6", text: "5" },
];
const map = new Map();
// 将所有的记录以下方便取
for (const t of a) {
map.set(t.id, t);
t.children = [];
}
map.forEach((t) => {
if (t.parent !== "#") {
const parent = map.get(t.parent);
if (parent) {
parent.children.push(t);
}
}
});
const result = [];
map.forEach((e) => {
result.push(e);
});
console.log(result);
// 从map里面去除pid为
function list2tree(list) {
var ret, cache = {};
for (var i = 0; i < list.length; ++i) {
var item = list[i];
var obj = cache[item.id] = { children: [] };
for (var key in item) obj[key] = item[key];
}
for (var key in cache) {
var obj = cache[key];
var id = obj.parent;
if (cache[id]) cache[id].children.push(obj);
else cache[id] = ret = { id: id, children: [obj] };
}
return ret;
}
console.log(list2tree([{
"id": "-1",
"parent": "#",
"text": "请选择"
},
{
"id": "1",
"parent": "#",
"text": "刑事案由"
},
{
"id": "2",
"parent": "1",
"text": "危害国家安全罪"
},
{
"id": "3",
"parent": "2",
"text": "背叛国家罪"
},
{
"id": "4",
"parent": "2",
"text": "分裂国家罪"
},
{
"id": "5",
"parent": "2",
"text": "煽动国家罪"
}
]));
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决