【问题标题】:Typescript - array to chunks打字稿 - 数组到块
【发布时间】:2017-10-02 12:14:50
【问题描述】:

我有一个数组如下:

public taskListCustom: any=[
{title: 'Task 1', status: 'done'},
{title: 'Task 2', status: 'done'},
{title: 'Task 3', status: 'done'},
{title: 'Task 4', status: 'done'},
{title: 'Task 5', status: 'done'},
{title: 'Task 6', status: 'done'},
{title: 'Task 7', status: 'done'},
{title: 'Task 8', status: 'done'},
{title: 'Task 9', status: 'done'},
{title: 'Task 10', status: 'done'},
{title: 'Task 11', status: 'done'},
{title: 'Task 12', status: 'done'},
{title: 'Task 13', status: 'done'},
{title: 'Task 14', status: 'done'},
{title: 'Task 15', status: 'done'},
{title: 'Task 16', status: 'done'},
{title: 'Task 17', status: 'done'},
{title: 'Task 18', status: 'done'},
{title: 'Task 19', status: 'done'},
{title: 'Task 20', status: 'done'},
{title: 'Task 21', status: 'done'},
{title: 'Task 22', status: 'done'},
{title: 'Task 23', status: 'done'},
{title: 'Task 24', status: 'done'},
]

还有一个空数组:public taskListCustomChunked: any=[];

我的目标是:如果我得到 6 的块大小(这个数字可以在 4 到 11 之间的任何位置),那么我必须将 taskListCustom 分成 6 个数组(即 24/6=4),然后将每个块插入为数组到 taskListCustomChunked 中,即它看起来像:

taskListCustomChunked = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[..],[..]]

我怎样才能完成它?

【问题讨论】:

  • 如果是 5 那么 24/5 数组应该是什么样子?
  • 如果剩余的元素不够,最后一个数组可以容纳更少的元素

标签: javascript arrays angular typescript


【解决方案1】:

您可以使用slice 方法实现此目的。

let taskListCustom=[ {title: 'Task 1', status: 'done'}, {title: 'Task 2', status: 'done'}, {title: 'Task 3', status: 'done'}, {title: 'Task 4', status: 'done'}, {title: 'Task 5', status: 'done'}, {title: 'Task 6', status: 'done'}, {title: 'Task 7', status: 'done'}, {title: 'Task 8', status: 'done'}, {title: 'Task 9', status: 'done'}, {title: 'Task 10', status: 'done'}, {title: 'Task 11', status: 'done'}, {title: 'Task 12', status: 'done'}, {title: 'Task 13', status: 'done'}, {title: 'Task 14', status: 'done'}, {title: 'Task 15', status: 'done'}, {title: 'Task 16', status: 'done'}, {title: 'Task 17', status: 'done'}, {title: 'Task 18', status: 'done'}, {title: 'Task 19', status: 'done'}, {title: 'Task 20', status: 'done'}, {title: 'Task 21', status: 'done'}, {title: 'Task 22', status: 'done'}, {title: 'Task 23', status: 'done'}, {title: 'Task 24', status: 'done'}, ]
let chunkLength= 7;
let chunkSize=Math.round(taskListCustom.length/chunkLength);
let result=[];
for (i=0; i<taskListCustom.length; i+=chunkSize) {
    if(result.length<chunkLength-1)
      result.push(taskListCustom.slice(i,i+chunkSize).map(a=>a.title));
    else{
      result.push(taskListCustom.slice(i).map(a=>a.title));
      break;
    }
}
console.log(result);

【讨论】:

  • 嗨!首先感谢您的回答:) 唯一的问题是,如果块大小是 3,那么我将有 24 个任务分布在三个数组中,这三个数组中的每一个 taskListCustomChunked 将有 8 个元素,而不是 8 个数组中的 3 个元素.
猜你喜欢
  • 2022-11-19
  • 1970-01-01
  • 2021-01-07
  • 2013-12-30
  • 2023-03-29
  • 1970-01-01
  • 2018-06-27
相关资源
最近更新 更多