从对象数组创建对象数组

罗里·菲尔丁

目前,我的数据是一个数组,其中包含一长串对象,格式为:

[ 
    { name: 'example' },
    { name: 'example' },
    ...
]

我想做的就是以给定的间隔20将此列表转换为对象数组的数组。

我想要这种格式:

[
  [
   { name: 'example' },
   { name: 'example' },
    ...18 more rows
   ],
  [
   { name: 'example' },
   { name: 'example' },
    ...18 more rows
  ],
]

chartdata包含初始格式的数据,我正在尝试获取“ newArray”中的新格式。为了实现这一目标,我提出了:

  let newArray = [];
  let data = [];

  chartdata.forEach((x, i) => {
    if(i === chartdata.length - 1 ){
      newArray.push(data)
      data = []
    }
    if(i%20===0){
      newArray.push(data)
      data = []
    }
    data.push(x);
  })
  console.log('newArray',newArray)

我不明白两件事。

控制台日志显示以下内容:

在此处输入图片说明

为什么newArray的第一个索引中有一个空数组?

  • 谢谢,我在第二个if语句中添加了&& i!== 0。

为什么newArray的索引4只有19个值?

第一个问题很容易解决,但是第二个问题我不知道如何解决。请谁能提供帮助?

劳罗·穆勒(LauroMüller)

如果您愿意将其他软件包集成到项目中,我相信chunkLodash的功能完全可以满足此目的:https ://lodash.com/docs/4.17.15#chunk

代码变得简单(就发生的事情而言很清楚):

const chunks = _.chunk(chartdata, 20);

通常,由于似乎您将要处理数组,因此考虑将Lodash集成到您的项目中,该库恰好针对了一个人希望对数组执行的许多操作。我在项目中与库一起工作了几年,并且几乎(如果有的话)从未遇到过其功能未涵盖的操作。

有一些关于优化的建议,但是老实说,在捆绑包大小方面,我从来没有发现导入整个库是一个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章