Arrays 将一个包含60个项目的数组转换为一个包含20个项目的数组
我有一个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个项。例如,我的初
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)