我采用递归只能得到 第一层p_id 的数据,不是全部的;
const test_list = [
{
id: 1,,
p_id: 0,
name: 'a',
},
{
id: 2,
p_id: 0,
name: 'b',
},
{
id: 3,
p_id: 0,
name: 'c',
},
{
id: 4,
p_id: 1,
name: 'a_1',
},
{
id: 5,
p_id: 1,
name: 'a_2',
},
{
id: 6,
p_id: 3,
name: 'c_1',
},
{
id: 7,
p_id: 1,
name: 'a_3',
},
{
id: 8,
p_id: 5,
name: 'a_2_1',
},
{
id: 9,
p_id: 4,
name: 'a_1_2',
},
{
id: 10,
p_id: 4,
name: 'a_1_3',
},
]
```javascript
const test_list = [
{
id: 1,
p_id: 0,
name: 'a',
},
{
id: 2,
p_id: 0,
name: 'b',
},
{
id: 3,
p_id: 0,
name: 'c',
},
{
id: 4,
p_id: 1,
name: 'a_1',
},
{
id: 5,
p_id: 1,
name: 'a_2',
},
{
id: 6,
p_id: 3,
name: 'c_1',
},
{
id: 7,
p_id: 1,
name: 'a_3',
},
{
id: 8,
p_id: 5,
name: 'a_2_1',
},
{
id: 9,
p_id: 4,
name: 'a_1_2',
},
{
id: 10,
p_id: 4,
name: 'a_1_3',
},
];
let obj = {}
for (let i = 0; i < test_list.length; i++) {
if (Object.prototype.toString.call(obj[test_list[i].p_id]) === '[object Array]') {
console.log(test_list[i].id, obj[test_list[i].p_id])
obj[test_list[i].p_id].push(test_list[i].id)
} else {
obj[test_list[i].p_id] = [];
obj[test_list[i].p_id].push(test_list[i].id)
}
}
console.log(obj)