[解决]Converting circular structure to JSON

    技术2025-09-09  39

    今天写一个递归时遇到了一个问题,类似于要把下面的这个数据:

    let arr = [ { name:'a1', childs:[ {name:'b1',child:null}, {name:'c1',child:null}, ] }, { name:'a2', childs:[ {name:'b2',child:null}, {name:'c2',child:null}, ] }, ];

    通过以下方法:

    for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].childs.length; i++) { arr[i][j].parent = arr[i]; } }

    构造构造成这样:

    let arr = [ { name:'a1', childs:[ {name:'b1',child:null,parent:a1}, {name:'c1',child:null,parent:a1}, ] }, { name:'a2', childs:[ {name:'b2',child:null,parent:a2}, {name:'c2',child:null,parent:a2}, ] }, ];

    简化一下就是:

    let b = {}; let a = {child:b} b.parent = a;

    这就涉及到了对于对象的循环引用。

    解决:

    for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr[i].childs.length; i++) { let obj = JSON.parse(JSON.stringify(arr[i])); arr[i][j].parent = obj/; } } let b = {}; let a = {child:b} b.parent = JSON.parse(JSON.stringify(a));
    Processed: 0.009, SQL: 9