多维数组转换成一维数组

127 阅读1分钟

多维数组转成一维数组

var data=[
    {
        id"1325637770210709505"tenantId"000000"parentId"0"roleName"销售Y"sort1,
        children:[
            {id"1334342397055766529"tenantId"000000"parentId"1334341884780253185"roleName"生产主管",sort1,
                children:[
                    {id"1336214375735832578"tenantId"000000"parentId"1334342397055766529"roleName"生产维修员"sort5}
                ]
            },
          {id"1334344475199180801"tenantId"000000"parentId"1334341884780253185"roleName"生产员工"sort1,
        children:[
            {id"1334344475199180801"tenantId"000000"parentId"1334341884780253185"roleName"生产员工"sort3}
          ]},
        ]
    }
]

/* 方法一 */
var array=[];
function fn(arr) {
    arr.forEach(item => {
        array.push(item)
        if(item.children!=undefined){
            fn(item.children)
        }
    });
}
fn(data)
console.log(array);

/* 方法二 */
function flatten(data) {
    let isArray = data instanceof Array;
    return isArray ? data.flatMap(item =>__flatten(item)): __flatten(data);
    function __flatten(item) {
      if (item.children) {
        return [...item.children.flatMap(children => __flatten(children)), item];
      } else {
        return [item]
      }
    }
  }
console.log(flatten(data));