如何递归地将一个数据集转换为另一个数据集?

给出以下数据,这些数据是我从 api 获取的,并且偶尔会被修改


const data = [

  {

    name: "BG",

    latest: false,

    dir: true,

    etag: null,

    objectName: "BG",

    size: 0,

    lastModified: null,

    storageClass: null,

    versionId: null,

    childItems: [

      {

        etag: '"13dda89d102a62beb58c57a9477b252c"',

        objectName: "BG/item.xml",

        size: 12763,

        lastModified: "2020-11-17T13:13:34.735Z",

        storageClass: "STANDARD",

        versionId: null,

        childItems: null,

        name: "item.xml",

        latest: false,

        dir: false,

      },

      {

        etag: '"5baf1d6bcccc266bfc76cbe36724bd99"',

        objectName: "BG/item.xml",

        size: 17856,

        lastModified: "2020-11-17T13:13:25.796Z",

        storageClass: "STANDARD",

        versionId: null,

        childItems: null,

        name: "item.xml",

        latest: false,

        dir: false,

      },

    ],

  },

  {

    name: "OTHER",

    latest: false,

    dir: true,

    etag: null,

    objectName: "OTHER",

    size: 0,

    lastModified: null,

    storageClass: null,

    versionId: null,

    childItems: [

      {

        etag: '"ab37611f0b217b71804da19d9111bddd"',

        objectName: "OTHER/item.xml",

        size: 3953,

        lastModified: "2020-11-18T09:12:25.634Z",

        storageClass: "STANDARD",

        versionId: null,

        childItems: null,

        name: "item.xml",

        latest: false,

        dir: false,

      },

      {

        name: "MORE",

        latest: false,

        dir: true,

        etag: null,

        objectName: "OTHER/MORE/",

        size: 0,

        lastModified: null,

        storageClass: null,

        versionId: null,

          },

判断标准是,当dir一个对象的属性为true时,获取name并赋值给属性label中的子属性,获取和属性childItem的值nameobjectName

对我来说推理是一项艰巨的任务,我提前感谢您的帮助


噜噜哒
浏览 105回答 1
1回答

慕莱坞森

迭代数据项。对于每件物品,获取标签并检查dir;如果true,则递归处理子级,否则获取数据。const processItems = items => items.map(item => {    const results = {      label: item.name,    };    if(item.dir) {      results.children = processItems(item.childItems);    }    else {      results.data = item.objectName;    }    return results;};const results = processItems(data);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript