关于#算法#的问题:我采用递归只能得到 第一层p_id 的数据

img

我采用递归只能得到 第一层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',
    },
]

img


```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)