javascript - 将数组元素分组为 n 个集合

标签 javascript arrays set

我有一个数组

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;
}

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

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

最佳答案

使用 Array.from 非常简单

const list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];

function chunkMaxLength(arr, chunkSize, maxLength) {
  return Array.from({length: maxLength}, () => arr.splice(0,chunkSize));
}

console.log(chunkMaxLength(list, 7, 2));

关于javascript - 将数组元素分组为 n 个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968570/

相关文章:

javascript - 在javascript中同步两个滚动条

javascript - nodemailer 不返回错误但未发送电子邮件

javascript - 未定义嵌套循环 (Javascript)

javascript - 在 React 的状态中使用 Set 数据结构

java - DB4o HashMap toString()

javascript - 如何在JavaScript中制作自己的字符串,就像我按键盘上的ALT代码(UTF-8)一样

javascript - 使用 Javascript 查找二维数组中数字最大的数组

c++ - 数组 :/有问题

php - 用数据填充多维数组

c++ - 如何填充和返回集合 vector 的 vector