脚本 / 设置从 0 开始的增量索引

我有一个问题,设置总是唯一的索引,递增一个。


我有一个这样的数组。


const parentArr = [

  {

    name: 'first parent array',

    childArray: [

      {

        name: '1 / first child'

      },

      {

        name: '1 / second child'

      }

    ]

  },

    {

    name: 'second parent array',

    childArray: [

      {

        name: '2 / first child array'

      },

      {

        name: '2 / second child array'

      }

    ]

  }

]

我期待这样的结果:


const expectedResult = [

  {

    name: 'first parrent array',

    additionalInfo: [

      {

        index: 0,

        name: '1 - first child'

      },

      {

        index: 1,

        name: '1 - second child'

      }

    ]

  },

   {

    name: 'second parrent array',

    additionalInfo: [

      {

        index: 2,

        name: '2 -first child array'

      },

      {

        index: 3,

        name: '2- second child array'

      }

    ]

  }

]

我想在附加信息中为0中的每个项目设置索引。


我试过这样,但我得到了错误的索引号


  return parentArr.map((parent) => {

    return {

      name: parent.name,

      additionalData: parent.childArray.map((child, index) => ({

        name: child.name

        index: index   // I'M STUCK ON THIS LINE

      })),

    };

  });


牧羊人nacy
浏览 125回答 2
2回答

当年话下

您必须独立于循环管理子级的索引。那这个呢?let i = 0;return parentArr.map((parent) => {  return {    name: parent.name,    additionalData: parent.childArray.map((child) => ({      name: child.name      index: i++    })),  };});

互换的青春

索引计数应位于地图外部,因为这将在每次迭代时重置它。您可以将此行为抽象为可重用的方法,如下所示。const parentArr = [  {    name: 'first parent array',    childArray: [      {        name: '1 / first child'      },      {        name: '1 / second child'      }    ]  },    {    name: 'second parent array',    childArray: [      {        name: '2 / first child array'      },      {        name: '2 / second child array'      }    ]  }];const transformArray = root => {  let i = 0;  return root.map(({ name, childArray }) => ({    name,    additionalData: childArray.map(({ name }) => ({      index: i++,      name    }))  }));};console.log(transformArray(parentArr));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript