将数组元素分组为 n 组

Vis*_*waj 5 javascript arrays set

我有一个数组

let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; 
Run Code Online (Sandbox Code Playgroud)

我想将其分组为一组 n 数组,以便 result[0] 中的前 n 个元素,以及 result[1] 中的后 n 个元素,如果剩余任何元素,则将其丢弃。

let sampleOutput = [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13]] for n = 7; 
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

但我无法得到预期的结果。我尝试过以下事情。

  1. 地图功能
  2. 运行 i 循环到 arr.len
  3. 检查arr.len % 7
  4. 为每三个元素创建一个数组。
  5. 这个问题与Split array into chunks不重复,因为我必须丢弃无法分组为 n 组的额外元素。
  6. 我必须保持原始数组不可变,因为我在子组件中的 props 上使用它。我需要一个不修改原始数组的函数。

Gré*_*ory 2

关于什么 :

function group5(arr, len) {
     let chunks = [];
     let copy   = arr.splice(); // Use a copy to not modifiy the original array
     while(copy.length > len) {
         chunks.push(copy.splice(0, len));
     }
     return chunks;
}
Run Code Online (Sandbox Code Playgroud)