Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将一个包含60个项目的数组转换为一个包含20个项目的数组_Arrays_Reactjs - Fatal编程技术网

Arrays 将一个包含60个项目的数组转换为一个包含20个项目的数组

Arrays 将一个包含60个项目的数组转换为一个包含20个项目的数组,arrays,reactjs,Arrays,Reactjs,我有一个60项的数组。我想将它拆分为一个数组,其中包含20个项目 下面是我的代码,但有点困在如何分离到数组中 const initialData = get(certificate, "transcript", []); const splitData = []; 这就是splitTranscriptData在最后的样子 [[1,2,3...20],[21,22,23...40],[41,42,43...60]] 我试图使其成为一种动态方式,将初始数组分割为每个数组中的20个项。例如,我的初

我有一个60项的数组。我想将它拆分为一个数组,其中包含20个项目

下面是我的代码,但有点困在如何分离到数组中

const initialData = get(certificate, "transcript", []);
const splitData = [];
这就是splitTranscriptData在最后的样子

[[1,2,3...20],[21,22,23...40],[41,42,43...60]]
我试图使其成为一种动态方式,将初始数组分割为每个数组中的20个项。例如,我的初始数组有55项,最终结果是3个数组,最后一个数组有15项


当初始数组中有更多项目时,比如说70个项目,它将分成4个数组,最后一个数组中有10个项目。

如果它总是从1 x 60数组到3 x 20数组,您可以硬编码索引,并按如下方式操作:

splitData = [initialData.slice(0,20), initialData.slice(20,40), initialData.slice(40,60)]

您可以使用递归来执行此操作:

const split = (input, output = []) => {
  if (!input.length) return output;
  output.push(input.slice(0, 20))
  return split(input.slice(20), output)
}

const splitData = split(initialData);
这里有一个JSFIDE的工作原理:

这将动态地将任意长度的数组拆分为长度为20的子数组,最后一个子数组包含所有剩余项

如果需要不同的子数组长度,也可以传入20作为参数

var items = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];

var splittedData  = [];

function splitData(splitLength) {

    for(var i = 0;i<items.length; i+=splitLength) { 
        splittedData.push(items.slice(i,i+splitLength));        
    }

}
输出:


您可以使用lodash拆分阵列:


不需要使用任何库,你可以轻松地做到这一点,代码如下:)

需要拆分的数组 分裂函数 size—块的大小。这里应该是20

    const splittedArray = (arr, size) =>
      arr.length > size
        ? [arr.slice(0, size), ...splittedArray(arr.slice(size), size)]
        : [arr];
以数组和块大小作为参数调用函数
你可以
Array.prototype.slice
函数从你的数组中创建子数组。如果我的初始数组是55个项目,而我仍然希望它分成3个数组,最后一个数组将有15个项目。是的,最后一个只有15项。我说得对吗?我必须在代码中手动使用
Array.prototype.slice
3次来分割我的初始数组?不。您可以使用
for
循环,每个子数组的元素数(20)将数组分割为子数组。
_.chunk(initialData, 20);
 const list = [1,2,3,...60]
    const arrayList = [
        list.slice(0,20),
        list.slice(20,40),
        list.slice(40,60),
    ]
var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
    const splittedArray = (arr, size) =>
      arr.length > size
        ? [arr.slice(0, size), ...splittedArray(arr.slice(size), size)]
        : [arr];
splittedArray(arr, 5)