我有一个数组
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14];
我希望将它分成一组n个数组,使得结果中的第一个n个元素在result [0]中,接下来的n个元素在result [1]中,如果有任何剩余的元素则被丢弃。
let sampleOutput = [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13]] for n = 7;
这是我的代码:
function group5(arr, len) {
let result = [];
let loop=parseInt(arr.length/len)
for (let i=0; i<arr.length; i+=len) {
let x = []; let limitReached = false;
for (let j=0; j<len; j++) {
if (arr[i+j]) {
x.push(arr[i+j]);
} else {
limitReached = true;
break;
}
}
if (!limitReached) {
result.push(x);
} else {
break;
}
}
return result;
}
但我无法得到预期的结果。我尝试了以下方法:
- 使用Map函数
- 运行i循环后检查arr.len
- 检查
arr.len % 7
- 为每个第三个元素创建一个数组。
- 这个问题不是Split array into chunks重复的,因为我必须丢弃不能组成n个集合的额外元素。
- 我必须保持原始数组不可变,因为我在子组件中使用props。我需要一个不修改原始数组的函数。