首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从对象数组创建对象数组

从对象数组创建对象数组
EN

Stack Overflow用户
提问于 2021-02-23 14:17:54
回答 2查看 50关注 0票数 0

目前,我的数据是一个数组,其中包含大量的对象,格式如下:

代码语言:javascript
复制
[ 
    { name: 'example' },
    { name: 'example' },
    ...
]

我要做的是在给定的时间间隔( 20 )内将这个列表转换为对象数组。

我想要这种格式:

代码语言:javascript
复制
[
  [
   { name: 'example' },
   { name: 'example' },
    ...18 more rows
   ],
  [
   { name: 'example' },
   { name: 'example' },
    ...18 more rows
  ],
]

图表数据包含初始格式的数据,我正在尝试获得'newArray‘的新格式。为了实现这一点,我指出:

代码语言:javascript
复制
  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个值?

第一个问题很容易解决,但是第二个问题我不明白如何解决。有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-23 14:36:16

如果您愿意将其他包集成到该项目中,我相信来自Lodash的函数chunk正好达到了这个目的:https://lodash.com/docs/4.17.15#chunk

代码变得非常简单(并且非常清楚正在发生的事情):

代码语言:javascript
复制
const chunks = _.chunk(chartdata, 20);

一般来说,由于您似乎将大量使用数组,请考虑将Lodash集成到您的项目中,库的目标正是您希望对数组执行的许多操作。在我的项目中,我在图书馆工作了几年,很少(如果有的话)会遇到他们的功能不涵盖的操作。

有一些关于优化的建议,但老实说,当涉及到包大小时,我从来没有发现导入整个库是一个问题。

票数 1
EN

Stack Overflow用户

发布于 2021-02-23 14:33:57

代码语言:javascript
复制
let i,j, newArray = [],chunk = 20;
for (i=0,j=chartdata.length; i<j; i+=chunk) {
    newArray.push(chartdata.slice(i,i+chunk));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66334907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档