Javascript 从对象数组创建对象数组
当前我的数据是一个数组,其中包含一长串对象,格式如下:Javascript 从对象数组创建对象数组,javascript,arrays,Javascript,Arrays,当前我的数据是一个数组,其中包含一长串对象,格式如下: [ { name: 'example' }, { name: 'example' }, ... ] 我试图做的是将这个列表转换成一个给定间隔20的对象数组 我想要这种格式: [ [ { name: 'example' }, { name: 'example' }, ...18 more rows ], [ { name: 'example' }, { name: 'e
[
{ 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的第一个索引中有一个空数组
- 谢谢,我已经添加了&&I!==第二个if语句中的0
让i,j,newArray=[],chunk=20;
let i,j, newArray = [],chunk = 20;
for (i=0,j=chartdata.length; i<j; i+=chunk) {
newArray.push(chartdata.slice(i,i+chunk));
}
对于(i=0,j=chartdata.length;i如果您愿意将其他软件包集成到项目中,我相信Lodash提供的函数chunk
正是为了这个目的:
代码变得非常简单(并且非常清楚发生了什么):
一般来说,因为看起来你将大量使用数组,考虑把LoaSHIs集成到你的项目中,这个库正好是你想要用数组执行的许多操作。我已经在我的项目中与图书馆工作了几年,而且几乎从来没有(如果有的话)。遇到了一个不属于他们职能范围的行动
有一些关于优化的问题,但老实说,当涉及到包大小时,我从未发现导入整个库是一个问题。第一个数组是空的bcoz0%20=0
,因此第二个条件变为真,空数组被推到最终的数组foreach((x,I)=>{})这里,在这一行中,x是当前元素,I是它的索引。在Javascript中,索引从0开始。因此对于第一个元素x,索引I=0&I%20==0为真(因为0%20等于0)&因此,在第2行代码中初始化的空数据数组被推送到newarray中,这就是newarray的索引0是空数组的原因。解释通常很有用
const chunks = _.chunk(chartdata, 20);